Freigeben über


Gewusst wie: Zugreifen auf Benutzerrollen mit Clientanwendungsdiensten

Aktualisiert: November 2007

Sie können Clientanwendungsdienste verwenden, um Rolleninformationen aus einem vorhandenen ASP.NET AJAX-Rollendienst abzurufen. Weitere Informationen zum Einrichten des Rollendiensts finden Sie unter Verwenden von Rolleninformationen mit ASP.NET-AJAX.

Im folgenden Verfahren wird veranschaulicht, wie Sie in einer Windows Forms-Anwendung, die für die Verwendung eines Rollendienstes konfiguriert wurde, auf Benutzerrolleninformationen für authentifizierte Benutzer zugreifen. Weitere Informationen finden Sie unter Gewusst wie: Konfigurieren von Clientanwendungsdiensten. Dieses Verfahren setzt voraus, dass auf einen aktiven ASP.NET AJAX-Rollendienst zugegriffen werden kann. Anweisungen zu End-to-End-Testverfahren für Clientanwendungsdienst-Features finden Sie unter Exemplarische Vorgehensweise: Verwenden von Clientanwendungsdiensten.

So stellen Sie fest, ob ein Benutzer über eine bestimmte Rolle verfügt

  • Rufen Sie die IsInRole-Methode des IPrincipal-Verweises auf, der von der static Thread.CurrentPrincipal-Eigenschaft abgerufen wird. Diese Methode gibt einen Boolean-Wert zurück, über den Sie auf bestimmte Funktionen zugreifen können, wie im folgenden Beispiel veranschaulicht. Diese Methode gibt false zurück, wenn der Benutzer nicht authentifiziert ist oder nicht über die angegebene Rolle verfügt.

    Die IsInRole-Methode greift über die ClientRoleProvider-Klasse intern auf den Remoterollendienst zu. Obwohl der direkte Zugriff auf die ClientRoleProvider-Klasse möglich ist, werden Sie normalerweise indirekt darauf zugreifen, wie im folgenden Code dargestellt. Weitere Informationen finden Sie unter Übersicht über Clientanwendungsdienste.

    Im folgenden Codebeispiel wird vorausgesetzt, dass die Anwendung einen Button mit dem Namen managerOnlyButton enthält.

    If System.Threading.Thread.CurrentPrincipal.IsInRole("manager") Then
    
        managerOnlyButton.Visible = True
    
    End If
    
    if (System.Threading.Thread.CurrentPrincipal.IsInRole("manager"))
    {
        managerOnlyButton.Visible = true;
    }
    

Robuste Programmierung

Durch den Beispielcode in diesem Thema werden die einfachsten Verwendungsmöglichkeiten des Rollendienstes in einer Windows-Clientanwendung veranschaulicht. Wenn Sie über Clientanwendungsdienste auf Benutzerrollen zugreifen, kann Ihr Code eine WebException auslösen, wenn der Dienst nicht verfügbar ist. Ein Beispiel zur Behandlung einer WebException in diesem Fall finden Sie unter Exemplarische Vorgehensweise: Verwenden von Clientanwendungsdiensten.

Darüber hinaus gibt die IsInRole-Methode immer false zurück, wenn die Benutzeranmeldung abgelaufen ist. Dies ist nicht der Fall, wenn die Anwendung die IsInRole-Methode kurz nach der Authentifizierung einmal aufruft. Wenn Ihre Anwendung Benutzerrollen zu anderen Zeiten abrufen muss, können Sie Code hinzufügen, durch den Benutzer, deren Anmeldung abgelaufen ist, erneut überprüft werden. Wenn alle gültigen Benutzer Rollen zugewiesen sind, können Sie durch Aufrufen der ClientRoleProvider.GetRolesForUser-Methode feststellen, ob die Anmeldung abgelaufen ist. Wenn keine Rollen zurückgegeben werden, ist die Anmeldung abgelaufen. Ein Beispiel für diese Funktion finden Sie unter den Ausführungen zur GetRolesForUser-Methode. Diese Funktionalität ist nur erforderlich, wenn Sie in der Anwendungskonfiguration Erneute Benutzeranmeldung bei Ablauf des Cookies anfordern ausgewählt haben. Weitere Informationen finden Sie unter Gewusst wie: Konfigurieren von Clientanwendungsdiensten.

Siehe auch

Aufgaben

Gewusst wie: Konfigurieren von Clientanwendungsdiensten

Exemplarische Vorgehensweise: Verwenden von Clientanwendungsdiensten

Konzepte

Übersicht über Clientanwendungsdienste

Verwenden von Rolleninformationen mit ASP.NET-AJAX

Referenz

ClientRoleProvider

Thread.CurrentPrincipal

IPrincipal.IsInRole

Weitere Ressourcen

Clientanwendungsdienste