Roles Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hanterar användarmedlemskap i roller för auktoriseringskontroll i ett ASP.NET program. Det går inte att ärva den här klassen.
public ref class Roles abstract sealed
public static class Roles
type Roles = class
Public Class Roles
- Arv
-
Roles
Exempel
I följande exempel visas Web.config-filen för ett program som har konfigurerats för att använda både ASP.NET medlemskap och ASP.NET roller och för att använda SqlRoleProvider för att lagra medlemskaps- och rollinformation i en SQL Server databas. Användare autentiseras med formulärautentisering och endast användare i rollen Administratörer får åtkomst till programmet.
<configuration>
<connectionStrings>
<add name="SqlServices" connectionString="Data Source=localhost;Initial Catalog=aspnetdb;Integrated Security=SSPI;" />
</connectionStrings>
<system.web>
<authentication mode="Forms" >
<forms loginUrl="login.aspx"
name=".ASPXFORMSAUTH" />
</authentication>
<authorization>
<deny users="?" />
<allow roles="Administrators" />
<deny users="*" />
</authorization>
<membership defaultProvider="AspNetSqlProvider" userIsOnlineTimeWindow="15">
</membership>
<roleManager defaultProvider="SqlProvider"
enabled="true"
cacheRolesInCookie="true"
cookieName=".ASPROLES"
cookieTimeout="30"
cookiePath="/"
cookieRequireSSL="true"
cookieSlidingExpiration="true"
cookieProtection="All" >
<providers>
<clear />
<add
name="SqlProvider"
type="System.Web.Security.SqlRoleProvider"
connectionStringName="SqlServices"
applicationName="SampleApplication" />
</providers>
</roleManager>
</system.web>
</configuration>
I följande kodexempel kontrolleras programmatiskt om den inloggade användaren är i rollen Administratörer innan användaren kan visa andra användares roller.
Kommentarer
ASP.NET rollhantering kan du hantera auktorisering för ditt program baserat på grupper av användare, som kallas roller. Genom att tilldela användare till roller kan du styra åtkomsten till olika delar eller funktioner i ditt webbprogram baserat på roll i stället för, eller utöver, att ange auktorisering baserat på användarnamn. Ett medarbetarprogram kan till exempel ha roller som Chefer, Anställda, Direktörer och så vidare, där olika behörigheter anges för varje roll.
Användare kan tillhöra mer än en roll. Om din webbplats till exempel är ett diskussionsforum kan vissa användare ha rollen som både medlemmar och moderatorer. Du kan definiera att varje roll har olika behörigheter på webbplatsen, och en användare som är i båda rollerna skulle då ha båda uppsättningarna med behörigheter.
Om du vill aktivera rollhantering för ditt ASP.NET-program använder du avsnittet roleManager i avsnittet system.web i Web.config-filen för ditt program, som du ser i följande exempel.
<configuration>
<connectionStrings>
<add name="SqlServices" connectionString="Data Source=localhost;Initial Catalog=aspnetdb;Integrated Security=SSPI;" />
</connectionStrings>
<system.web>
<authentication mode="Forms" >
<forms loginUrl="login.aspx"
name=".ASPXFORMSAUTH" />
</authentication>
<roleManager defaultProvider="SqlProvider"
enabled="true"
cacheRolesInCookie="true"
cookieName=".ASPROLES"
cookieTimeout="30"
cookiePath="/"
cookieRequireSSL="false"
cookieSlidingExpiration="true"
cookieProtection="All" >
<providers>
<add
name="SqlProvider"
type="System.Web.Security.SqlRoleProvider"
connectionStringName="SqlServices"
applicationName="SampleApplication" />
</providers>
</roleManager>
</system.web>
</configuration>
Du kan ange auktoriseringsregler i konfigurationsfilen för webbprogrammet eller programmatiskt i koden. Följande auktoriseringsavsnitt från en Web.config-fil kräver till exempel att användarna loggar in (genom att neka anonyma användare) och sedan endast tillåter att användare i rollen Administratörer har åtkomst.
<authorization>
<deny users="?" />
<allow roles="Administrators" />
<deny users="*" />
</authorization>
Om du använder authorization avsnittet i programmets Web.config-fil för att ange auktorisering baserat på roller, måste användarna av ditt program ange en autentiserad användaridentitet. Du kan autentisera användare med hjälp av antingen Windows- eller Formulärautentisering. Anonyma användare kan inte tilldelas till en roll. Roller kan användas oberoende av, eller tillsammans med, klasserna ASP.NET Membership.
Om du vill verifiera rollmedlemskap programmatiskt kan du använda Roles -klassen eller Page.User -egenskapen med IsUserInRole -metoden, eller så kan du använda Page.User egenskapen med IPrincipal.IsInRole -metoden. Exempelkod som programmässigt kontrollerar rollmedlemskap finns i avsnittet Exempel i det här avsnittet.
Med Roles klassen kan du också skapa och ta bort roller och lägga till användare i eller ta bort användare från roller.
Note
Om du har konfigurerat ditt program att använda WindowsTokenRoleProvider klassen kan du inte ändra roller eller rollmedlemskap. Klassen WindowsTokenRoleProvider verifierar endast medlemskap i Windows säkerhetsgrupper. I det här fallet måste du använda Windows hantering av användarkonton i stället för att ASP.NET roller för att skapa och ta bort grupper och hantera gruppmedlemskap.
Du kan lagra rollinformation i flera datakällor.
Du kan använda klassen WindowsTokenRoleProvider för att hämta rollinformation baserat på medlemskap i Windows grupper.
Du kan lagra rollinformation i en SQL Server databas med hjälp av klassen SqlRoleProvider.
Om du har befintlig rollinformation eller vill lagra rollinformation i och hämta rollinformation från en annan datakälla än Windows, ett auktoriseringsarkiv eller SQL Server kan du implementera en anpassad rollprovider genom att skapa en klass som ärver RoleProvider abstrakt klass. Mer information finns i Implementera en rollprovider.
Om en användares webbläsare accepterar cookies kan du lagra rollinformation för användaren i en cookie på användarens dator. På varje sidbegäran läser ASP.NET rollinformationen för användaren från cookien. Detta kan förbättra programmets prestanda genom att minska mängden kommunikation som krävs med datakällan för att hämta rollinformation. Om rollinformationen för en användare är för lång för att lagra i en cookie lagrar ASP.NET bara den senast använda rollinformationen i cookien och letar sedan upp ytterligare rollinformation i datakällan efter behov. Om användarens webbläsare inte stöder cookies eller cookies är inaktiverade cachelagras inte rollinformation i en cookie.
Du kan förbättra tillförlitligheten för rollnamnen som cachelagras i en cookie genom att ange en egenskap CookieProtectionValue när du konfigurerar ASP.NET roller. Standardvärdet CookieProtectionValue är All, som krypterar rollnamn i cookien och verifierar att cookieinnehållet inte har ändrats.
Egenskaper
| Name | Description |
|---|---|
| ApplicationName |
Hämtar eller anger namnet på programmet som ska lagras och hämta rollinformation för. |
| CacheRolesInCookie |
Hämtar ett värde som anger om den aktuella användarens roller cachelagras i en cookie. |
| CookieName |
Hämtar namnet på cookien där rollnamn cachelagras. |
| CookiePath |
Hämtar sökvägen för cookien för cachelagrade rollnamn. |
| CookieProtectionValue |
Hämtar ett värde som anger hur rollnamn som cachelagras i en cookie skyddas. |
| CookieRequireSSL |
Hämtar ett värde som anger om rollnamnscookien kräver SSL för att kunna returneras till servern. |
| CookieSlidingExpiration |
Anger om rollnamnen cookiens förfallodatum och tid kommer att återställas med jämna mellanrum. |
| CookieTimeout |
Hämtar antalet minuter innan rollcookien upphör att gälla. |
| CreatePersistentCookie |
Hämtar ett värde som anger om rollnamn-cookien är sessionsbaserad eller beständig. |
| Domain |
Hämtar värdet för domänen för rollnamn-cookien. |
| Enabled |
Hämtar eller anger ett värde som anger om rollhantering är aktiverat för det aktuella webbprogrammet. |
| MaxCachedResults |
Hämtar det maximala antalet rollnamn som ska cachelagras för en användare. |
| Provider |
Hämtar standardrollprovidern för programmet. |
| Providers |
Hämtar en samling rollprovidrar för ASP.NET-programmet. |
Metoder
| Name | Description |
|---|---|
| AddUsersToRole(String[], String) |
Lägger till de angivna användarna i den angivna rollen. |
| AddUsersToRoles(String[], String[]) |
Lägger till de angivna användarna i de angivna rollerna. |
| AddUserToRole(String, String) |
Lägger till den angivna användaren i den angivna rollen. |
| AddUserToRoles(String, String[]) |
Lägger till den angivna användaren i de angivna rollerna. |
| CreateRole(String) |
Lägger till en ny roll i datakällan. |
| DeleteCookie() |
Tar bort cookien där rollnamn cachelagras. |
| DeleteRole(String, Boolean) |
Tar bort en roll från datakällan. |
| DeleteRole(String) |
Tar bort en roll från datakällan. |
| FindUsersInRole(String, String) |
Hämtar en lista över användare i en angiven roll där användarnamnet innehåller det angivna användarnamnet som ska matchas. |
| GetAllRoles() |
Hämtar en lista över alla roller för programmet. |
| GetRolesForUser() |
Hämtar en lista över de roller som den inloggade användaren är i. |
| GetRolesForUser(String) |
Hämtar en lista över de roller som en användare finns i. |
| GetUsersInRole(String) |
Hämtar en lista över användare i den angivna rollen. |
| IsUserInRole(String, String) |
Hämtar ett värde som anger om den angivna användaren finns i den angivna rollen. API:et är endast avsett att anropas inom ramen för en ASP.NET begärandetråd, och i det sanktionerade användningsfallet är det trådsäkert. |
| IsUserInRole(String) |
Hämtar ett värde som anger om den inloggade användaren finns i den angivna rollen. API:et är endast avsett att anropas inom ramen för en ASP.NET begärandetråd, och i det sanktionerade användningsfallet är det trådsäkert. |
| RemoveUserFromRole(String, String) |
Tar bort den angivna användaren från den angivna rollen. |
| RemoveUserFromRoles(String, String[]) |
Tar bort den angivna användaren från de angivna rollerna. |
| RemoveUsersFromRole(String[], String) |
Tar bort de angivna användarna från den angivna rollen. |
| RemoveUsersFromRoles(String[], String[]) |
Tar bort de angivna användarnamnen från de angivna rollerna. |
| RoleExists(String) |
Hämtar ett värde som anger om det angivna rollnamnet redan finns i rolldatakällan. |