Cum pot seta un rol implicit pentru un utilizator nou utilizând Windows Authentication cu SqlRoleProvider?

voturi
1

Am o aplicație care utilizează Windows Authentication și un SqlRoleProvider pentru autentificarea utilizatorului și de gestionare a rolului respectiv. Acesta este de lucru bine cu utilizatorii mei de testare pe care le-am adăugat la baza de date ca valori prestabilite. Aplicația cere utilizatorilor să se autentifice (utilizând acreditările pentru Windows) și apoi să fie capabil de a utiliza această aplicație internă ca „utilizator“ de bază. În cazul în care utilizatorul trebuie să se adauge la un rol la nivel înalt, un administrator ar fi responsabil pentru acest lucru după prima logare.

Acestea fiind spuse, cum mi-ar adăuga un utilizator la rolul implicit, atunci când ei se conectează pentru prima dată în? În mod logic, știu că ar trebui să sun Roles.IsUserInRole () și apoi adăugați-le în cazul în care acestea nu sunt; Cu toate acestea, în cazul în care aș face asta? Am probleme la care localizarea eveniment în global.asax de a utiliza.

Mulțumiri

EDIT: Pentru a extinde scenariul un pic, nu folosesc un sistem complet furnizor de membru din cauza cerințelor privind scrierea de noi furnizori de a permite șirul de conexiune să fie stocate în afara web.config. Eu nu sunt , folosind orice formă de înregistrare sau pagină de conectare și anunțându Windows Autentificarea integrată în IIS se ocupe de aspectele de autentificare în timp ce SqlRoleProvider exacerbate gestionează rolurile de utilizator. Sistemul este bine de lucru pentru utilizatorii care am roluri de configurare prin teste codificate greu. Sunt doar cauți un mod de a adăuga noi utilizatori (care ar fi autentificat de IIS) , care urmează să fie adăugat imediat la un „Utilizatorii“ rol implicit. Cred că am găsit -o ; Cu toate acestea, sunt examinează în prezent modalități de a face nu trage la fiecare cerere din motive de performanță.

Întrebat 09/12/2008 la 21:13
sursa de către utilizator
În alte limbi...                            


3 răspunsuri

voturi
1

Am fost capabil de a localiza soluția după săpat și joacă în jurul valorii de un pic mai mult. Am adăugat următorul cod la fișierul meu Global.asax și este realizarea ceea ce am speranța.

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

Sunt îngrijorat din moment ce acest cod de incendii cu fiecare solicitare de pagină. Există o modalitate mai bună de a limita, atunci când se întâmplă acest lucru? Ar trebui să adăugați acest cod la evenimentul Page_Load pagina de destinație în loc de global.asax?

Publicat 09/12/2008 la 21:51
sursa de către utilizator

voturi
0

De ce nu-l pune când login sau înregistrați?

Atunci când datele de conectare, mâner acel eveniment și a pus acest lucru. Verificați de fiecare data cand va logati.

Publicat 09/12/2008 la 22:08
sursa de către utilizator

voturi
0

Aș adăuga rolul implicit pentru utilizator direct după ce utilizatorul a fost preluat.

Ceva de genul astfel:

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

  AddUsersToRoles(user, defaultRoles); 

}
Publicat 09/12/2008 la 21:23
sursa de către utilizator

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