Site-uri cu conturi de acces. Mecanisme de autentificare și autorizare în ASP.NET. Episodul 2

Ta-daaaam! Am vorbit data trecută despre ce și cum și mai ales despre cum pregătești baza de date ca să suporte mecanismele astea. Reamintesc cele 3 cuvinte cheie: Membership, RoleManager și Profile – după cuvintele astea cheie veți căuta în documentația .NET Framework când vă veți prinde urechile.

Configurările pentru mecanismele de autentificare, autorizare și persistența datelor de profilare se fac în Web.config, fișierul de configurare aflat în directorul rădăcină al aplicației Web.

În principiu, ar fi trei pași: menționezi baza de date la care se conectează aplicația, pentru fiecare din mecanisme setezi unul sau mai mulți provideri, apoi spui care este providerul implicit.

Cum te conectezi la baza de date
Destul de simplu: faci un string de conectare în care specifici cum se leagă aplicația ta motorul de date, sub elementul rădăcină <configuration>.

<connectionStrings>
   <remove name="LocalSqlServer" />
   <add name="MyUserConnection"
           connectionString="Server=LocalHost\SqlExpress; IntegratedSecurity=True; Database=Volksbank"></add>
</connectionStrings>

Cum setezi mecanism cu provider
Iar simplu: sub fiecare din mecanisme adaugi provider, care trebuie să știe la ce bază de date să se conecteze și ce clase, în ce namespace, vor furniza serviciile mecanismului.

<membership defaultProvider="MyAspNetSqlMembershipProvider">
   <providers>
      <clear />
      <add name="MyAspNetSqlMembershipProvider" connectionStringName="MyUserConnection" applicationName="/Joaca" 
              type="System.Web.Security.SqlMembershipProvider…" />
    </providers>
</membership>
<roleManager defaultProvider="MyAspNetSqlRoleProvider" enabled="true" …>
   <providers>
      <clear />
      <add name="MyAspNetSqlRoleProvider" connectionStringName="MyUserConnection" applicationName="/Joaca"
              type="System.Web.Security.SqlRoleProvider…" />
   </providers>
</roleManager>

Mecanismul de Profile
Pe lângă provider, trebuie să spui ce fel de date vrei să păstrezi despre un utilizator. Câmpurile pe care le specifici vor deveni proprietăți ale obiectului utilizator.

<profile defaultProvider="MyAspNetSqlProfileProvider" enabled="true" automaticSaveEnabled="true">
   <properties>
      <clear />
      <add name="EmailSubscribed" type="Boolean" defaultValue="false" />
      <group name="Phone">
          <add name="Mobile" />
          <add name="Home" />
          <add name="Business" />
          <add name="Fax" />
      </group>
   </properties>
   <providers>
      <clear />
      <add name="MyAspNetSqlProfileProvider" connectionStringName="MyUserConnection" ApplicationName="/Joaca" 
              type="System.Web.Profile.SqlProfileProvider…" />
   </providers>
</profile>

Ce-i cu acele <remove/> și <clear/>? Serverul pe care vei ține aplicația s-ar putea să aibe propriile sale setări, moștenite de toate site-urile și aplicațiile găzduite. Ca să te asiguri că nu pici într-o capcană a cascadării, anulezi setările serverului. Am scris despre configurare și cascadare mai demult…

Setările pentru fiecare din mecanisme pot fi mult mai complicate. De genul cookies folosite, formatul de parolă, restricții la complexitatea parolei, durata sesiunii, dacă se păstrează profile pentru utilizatori neautentificați etc. Citiți mai departe în documentația .NET Framework SDK despre cuvintele cheie.

În loc de concluzie

Ați pregătit baza de date și ați configurat modelul Provider pentru cele 3 mecanisme – autentificare, autorizare și date profil. Și-acum ce? În principiu, citiți despre controalele de login furnizate de ASP.NET 2.0. Uite ce zice documentația:

The ASP.NET login controls (Login, LoginView, LoginStatus, LoginName, and PasswordRecovery) encapsulate virtually all of the logic required to prompt users for credentials and validate the credentials in the membership system.

Cu controlul LoginView, poți seta ca anumite elemente dintr-o pagină să fie vizibile numai anumitor utilizatori (grupuri de utilizatori).

Poți restricționa accesul utilizatorilor la anumite zone din site sau aplicație Web folosind zone setate în Web.config. Blocarea accesului se face plasând locații ca cele de mai jos sub elementul <configuration>. Aici, în sub-folderul Global_Admin al site-ului meu nu au acces decât utilizatorii ce au rolul de Global administrator:

<location path="Global_Admin">
    <system.web>
        <authorization>
            <deny users="?" />   – respinge utilizatorii neautentificați
            <allow roles="Global administrator" />   – acceptă acest grup de utilizatori
            <deny users="*" />   – respinge orice altceva
        </authorization>
    </system.web>
</location>

Configurarea acestor mecanisme de autorizare sau autentificare și managementul utilizatorilor cu rolurile lor pentru o aplicație Web se pot face direct din Visual Studio Web Developer Express Edition: Meniu -> Website -> ASP.NET Configuration. Sau din consola de management a IIS.

Lasă un răspuns

Completează mai jos detaliile despre tine sau dă clic pe un icon pentru autentificare:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare / Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare / Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare / Schimbă )

Fotografie Google+

Comentezi folosind contul tău Google+. Dezautentificare / Schimbă )

Conectare la %s