Hoe kan ik een standaard rol voor een nieuwe gebruiker met behulp van Windows-verificatie met de SqlRoleProvider ingesteld?

stemmen
1

Ik heb een toepassing die gebruikmaakt van Windows-verificatie en een SqlRoleProvider voor de authenticatie van de gebruiker en de rol van het management respectievelijk. Het werkt prima met mijn testgebruikers die ik heb toegevoegd aan de database als standaard. De applicatie vereist gebruikers om in te loggen (met behulp van Windows-referenties) en vervolgens in staat zijn om deze interne toepassing gebruiken als een basis gebruiker. Als de gebruiker toe te voegen aan een hoog niveau rol nodig heeft, zou een beheerder die verantwoordelijk is voor dit na de eerste log in zijn.

Met dat gezegd, hoe zou ik voeg een gebruiker om de standaard rol toen ze voor het eerst inloggen? Logisch, ik weet dat ik zou moeten Roles.IsUserInRole (call) en voeg ze toe als ze niet; Maar waar zou ik dat doen? Ik heb problemen met het lokaliseren die gebeurtenis in de Global.asax te gebruiken.

Bedankt

EDIT: Als u het scenario uit te breiden een beetje, ik ben niet met behulp van een volledig lidmaatschap provider systeem als gevolg van de vereisten op het schrijven van nieuwe aanbieders, zodat de verbinding string buitenkant van de web.config moet worden opgeslagen. Ik ben niet met behulp van een vorm van registratie of login pagina en laten de Windows Integrated Authentication in IIS omgaan met de authenticatie aspecten terwijl mijn verbeterde SqlRoleProvider beheert de gebruiker rollen. Het systeem werkt prima voor gebruikers die ik heb opstelling rollen via hard gecodeerde testen. Ik ben gewoon op zoek naar een manier om nieuwe gebruikers toe te voegen (die zouden worden geverifieerd door IIS) direct te worden toegevoegd aan een standaard Users rol. Ik denk dat ik het gevonden; echter, ben nu onderzoeken manieren om het niet af op elk verzoek om de prestaties te verbeteren.

De vraag is gesteld op 09/12/2008 om 21:13
bron van user
In andere talen...                            


3 antwoorden

stemmen
0

Ik zou de standaard rol toe te voegen aan de gebruiker direct nadat de gebruiker is opgehaald.

Iets als zodanig:

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

  AddUsersToRoles(user, defaultRoles); 

}
antwoordde op 09/12/2008 om 21:23
bron van user

stemmen
1

Ik was in staat om de oplossing na het graven en spelen rond een beetje meer te vinden. Ik voegde de volgende code om mijn Global.asax bestand en het is het vervullen van wat ik gehoopt.

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

Ik ben bezorgd, omdat deze code branden met elke pagina-aanvraag. Is er een betere manier om te beperken wanneer dit gebeurt? Moet ik deze code om de bestemmingspagina Page_Load in plaats van de Global.asax toe te voegen?

antwoordde op 09/12/2008 om 21:51
bron van user

stemmen
0

Waarom niet het wanneer het login of registreer?

Wanneer de login, het handvat dat geval en zet deze in. Controleer telkens als ze in te loggen.

antwoordde op 09/12/2008 om 22:08
bron van user

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