Wie stelle ich eine Standardrolle für einen neuen Benutzer unter Verwendung von Windows-Authentifizierung mit dem SqlRoleProvider?

stimmen
1

Ich habe eine Anwendung, die Windows-Authentifizierung und eine SqlRoleProvider für die Benutzerauthentifizierung und Rollenverwaltung jeweils verwendet. Es funktioniert gut mit meinem Test-Nutzer, die ich als Standardwerte in die Datenbank hinzugefügt haben. Die Anwendung erfordert Benutzer anmelden (Windows-Anmeldeinformationen) und dann in der Lage sein, diese interne Anwendung als Basis „user“ zu verwenden. Wenn der Benutzer auf ein hohes Niveau Rolle hinzugefügt werden muss, würde ein Admin für diese nach dem ersten Log-in verantwortlich.

Mit dieser sagt, wie würde ich einen Benutzer die Standardrolle hinzufügen, wenn sie zum ersten Mal anmelden? Logischerweise weiß ich, dass ich Roles.IsUserInRole anrufen müsste () und sie dann hinzufügen, wenn sie nicht; aber wo würde ich das tun? Ich habe Probleme beim Auffinden der Veranstaltung in der Global.asax zu verwenden.

Vielen Dank

EDIT: das Szenario ein wenig zu erweitern, ich bin ein Vollmitgliedschaft Provider - System nicht mit aufgrund Anforderungen an neue Anbieter schreiben die Verbindungszeichenfolge zu ermöglichen , außerhalb des web.config gespeichert werden. Ich bin nicht jede Form der Registrierung oder Login - Seite verwenden und die integrierte Windows - Authentifizierung in IIS läßt die Authentifizierungs Aspekte behandeln , während meine verbesserten SqlRoleProvider die Rollen Benutzer verwaltet. Das System funktioniert gut für Anwender , die ich Setup - Rollen über hartcodierte Tests haben. Ich suche nur für einen Weg , um neue Benutzer hinzuzufügen (die von IIS authentifiziert werden würden) , um sofort auf einen Standard „Benutzer“ Rolle hinzugefügt werden. Ich denke , dass ich es gefunden habe; aber die Prüfung ist jetzt Möglichkeiten , um es aus Leistungsgründen nicht auf jede Anfrage zu machen Feuer.

Veröffentlicht am 09/12/2008 um 21:13
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
1

Ich war in der Lage, die Lösung nach graben und spielen um ein bisschen mehr zu suchen. Ich habe den folgenden Code in meiner Datei Global.asax und es vollbringt, was ich hoffe.

protected void WindowsAuthentication_OnAuthenticate(object sender, WindowsAuthenticationEventArgs e)
{
    if (!Roles.IsUserInRole(e.Identity.Name, "Users"))
    {
        Roles.AddUsersToRole(new string[] { e.Identity.Name }, "Users");
    }
}

Ich bin besorgt, da dieser Code Brände mit jedem Seitenaufruf. Gibt es eine bessere Art und Weise zu begrenzen, wenn dies der Fall ist? Soll ich fügen Sie einfach diesen Code zum Ereignis Page_Load der Zielseite anstelle der Global.asax?

Beantwortet am 09/12/2008 um 21:51
quelle vom benutzer

stimmen
0

Warum Sie es nicht, wenn die Anmeldung oder registrieren?

Wenn das Login, das Ereignis verarbeiten und diese in. Überprüfen Sie jedes Mal sie anmelden.

Beantwortet am 09/12/2008 um 22:08
quelle vom benutzer

stimmen
0

Ich würde die Standardrolle für den Benutzer hinzufügen, direkt nachdem der Benutzer abgerufen wurde.

So etwas wie solche:

user = Membership.GetUser()
if (user != null)
{
  // default role 
  string[] defaultRoles = {"MyRole"};

  AddUsersToRoles(user, defaultRoles); 

}
Beantwortet am 09/12/2008 um 21:23
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more