Roles Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Administra la pertenencia del usuario a roles para el control de autorización en una aplicación ASP.NET. Esta clase no puede heredarse.
public ref class Roles abstract sealed
public static class Roles
type Roles = class
Public Class Roles
- Herencia
-
Roles
Ejemplos
En el ejemplo siguiente se muestra el archivo Web.config de una aplicación configurada para usar tanto la pertenencia ASP.NET como los roles de ASP.NET y para almacenar la SqlRoleProvider información de pertenencia y rol en una base de datos de SQL Server. Los usuarios se autentican con autenticación de formularios y solo los usuarios del rol Administradores pueden acceder a la aplicación.
<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>
En el ejemplo de código siguiente se comprueba mediante programación si el usuario que ha iniciado sesión está en el rol Administradores antes de permitir que el usuario vea los roles de otros usuarios.
Comentarios
ASP.NET administración de roles permite administrar la autorización de la aplicación en función de grupos de usuarios, denominados roles. Al asignar usuarios a roles, puede controlar el acceso a diferentes elementos o características de la aplicación web en función del rol en lugar de especificar la autorización basada en el nombre de usuario. Por ejemplo, una aplicación de empleado puede tener roles como Administradores, Empleados, Directores, etc., donde se especifican distintos privilegios para cada rol.
Los usuarios pueden pertenecer a más de un rol. Por ejemplo, si el sitio es un foro de discusión, es posible que algunos usuarios tengan el rol de Miembros y Moderadores. Puede definir cada rol para tener privilegios diferentes en el sitio y, a continuación, un usuario que se encuentra en ambos roles tendría ambos conjuntos de privilegios.
Para habilitar la administración de roles para la aplicación ASP.NET, use el elemento roleManager de la system.web
sección del archivo Web.config de la aplicación, como se muestra en el ejemplo siguiente.
<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>
Puede especificar reglas de autorización en el archivo de configuración de la aplicación web o mediante programación en el código. Por ejemplo, la siguiente sección de autorización de un archivo de Web.config requiere que los usuarios inicien sesión (denegando usuarios anónimos) y, a continuación, solo los usuarios del rol Administradores tengan acceso.
<authorization>
<deny users="?" />
<allow roles="Administrators" />
<deny users="*" />
</authorization>
Si usa la authorization
sección del archivo Web.config de la aplicación para especificar la autorización basada en roles, los usuarios de la aplicación deben proporcionar una identidad de usuario autenticada. Puede autenticar a los usuarios mediante la autenticación de Windows o Forms. Los usuarios anónimos no se pueden asignar a un rol. Los roles se pueden usar independientemente o junto con las clases ASP.NET Membership .
Para comprobar la pertenencia a roles mediante programación, puede usar la Roles clase o la Page.User propiedad con el IsUserInRole método , o bien puede usar la Page.User propiedad con el IPrincipal.IsInRole método . Para obtener código de ejemplo que comprueba mediante programación la pertenencia a roles, consulte la sección Ejemplo de este tema.
La Roles clase también permite crear y eliminar roles y agregar usuarios a los roles o quitarlos de ellos.
Nota
Si ha configurado la aplicación para usar la WindowsTokenRoleProvider clase , no puede modificar roles ni pertenencia a roles. La WindowsTokenRoleProvider clase solo comprueba la pertenencia a grupos de seguridad de Windows. En este caso, debe usar la administración de cuentas de usuario de Windows en lugar de ASP.NET roles para crear y eliminar grupos y administrar la pertenencia a grupos.
Puede almacenar información de roles en varios orígenes de datos.
Puede usar la WindowsTokenRoleProvider clase para recuperar información de roles basada en la pertenencia a grupos de Windows.
Puede almacenar información de roles en una base de datos de SQL Server mediante la SqlRoleProvider clase .
Si tiene información de rol existente o desea almacenar información de roles en un origen de datos distinto de Windows, un almacén de autorización o SQL Server, puede implementar un proveedor de roles personalizado mediante la creación de una clase que herede la RoleProvider clase abstracta. Para obtener más información, consulte Implementación de un proveedor de roles.
Si el explorador de un usuario acepta cookies, puede almacenar información de rol para ese usuario en una cookie en el equipo del usuario. En cada solicitud de página, ASP.NET lee la información de rol de ese usuario de la cookie. Esto puede mejorar el rendimiento de la aplicación reduciendo la cantidad de comunicación necesaria con el origen de datos para recuperar información de roles. Si la información de rol de un usuario es demasiado larga para almacenarse en una cookie, ASP.NET almacena solo la información de rol usada más recientemente en la cookie y, a continuación, busca información de rol adicional en el origen de datos según sea necesario. Si el explorador del usuario no admite cookies o cookies está deshabilitada, la información del rol no se almacena en caché en una cookie.
Puede mejorar la confiabilidad de los nombres de rol almacenados en caché en una cookie especificando una CookieProtectionValue propiedad al configurar ASP.NET roles. El valor predeterminado CookieProtectionValue es All
, que cifra los nombres de rol en la cookie y valida que el contenido de la cookie no se ha modificado.
Propiedades
ApplicationName |
Obtiene o establece el nombre de la aplicación para la que se va a almacenar y recuperar información de roles. |
CacheRolesInCookie |
Obtiene un valor que indica si los roles del usuario actual se almacenan provisionalmente en una cookie. |
CookieName |
Obtiene el nombre de la cookie donde están almacenados los nombres de rol. |
CookiePath |
Obtiene la ruta de acceso de la cookie de nombres de rol. |
CookieProtectionValue |
Obtiene un valor que indica cómo se protegen los nombres de rol almacenados provisionalmente en una cookie. |
CookieRequireSSL |
Obtiene un valor que indica si la cookie de nombres de rol requiere SSL para su devolución al servidor. |
CookieSlidingExpiration |
Indica si la fecha y hora de expiración de la cookie de nombres de rol se restablece periódicamente. |
CookieTimeout |
Obtiene el número de minutos antes de que expire la cookie de roles. |
CreatePersistentCookie |
Obtiene un valor que indica si la cookie de nombres de rol es para una sesión o persistente. |
Domain |
Obtiene el valor del dominio de la cookie de nombres de rol. |
Enabled |
Obtiene o establece un valor que indica si está habilitada la administración de roles para la aplicación web actual. |
MaxCachedResults |
Obtiene el número máximo de nombres de rol almacenados para un usuario. |
Provider |
Obtiene el proveedor de roles predeterminado para la aplicación. |
Providers |
Obtiene una colección de los proveedores de roles de la aplicación ASP.NET. |
Métodos
AddUsersToRole(String[], String) |
Agrega los usuarios especificados al rol especificado. |
AddUsersToRoles(String[], String[]) |
Agrega los usuarios especificados a los roles especificados. |
AddUserToRole(String, String) |
Agrega el usuario especificado al rol especificado. |
AddUserToRoles(String, String[]) |
Agrega el usuario especificado a los roles especificados. |
CreateRole(String) |
Agrega un rol nuevo al origen de datos. |
DeleteCookie() |
Elimina la cookie donde se almacenan los nombres de rol. |
DeleteRole(String) |
Quita un rol del origen de datos. |
DeleteRole(String, Boolean) |
Quita un rol del origen de datos. |
FindUsersInRole(String, String) |
Obtiene una lista de los nombres de usuario de un rol especificado que contienen un nombre de usuario buscado. |
GetAllRoles() |
Obtiene una lista de todas los roles de la aplicación. |
GetRolesForUser() |
Obtiene una lista de los roles en los que está incluido el usuario de la sesión actual. |
GetRolesForUser(String) |
Obtiene una lista de los roles en que está incluido un usuario. |
GetUsersInRole(String) |
Obtiene una lista de usuarios incluidos en el rol especificado. |
IsUserInRole(String) |
Obtiene un valor que indica si el usuario que inició la sesión actual está incluido en el rol especificado. La API se ha diseñado únicamente para que se llame en el contexto de un subproceso de solicitud ASP.NET, y en este uso aprobado es seguro para subprocesos. |
IsUserInRole(String, String) |
Obtiene un valor que indica si el usuario especificado está incluido en el rol especificado. La API se ha diseñado únicamente para que se llame en el contexto de un subproceso de solicitud ASP.NET, y en este uso aprobado es seguro para subprocesos. |
RemoveUserFromRole(String, String) |
Quita el usuario especificado del rol especificado. |
RemoveUserFromRoles(String, String[]) |
Quita el usuario especificado de los roles especificados. |
RemoveUsersFromRole(String[], String) |
Quita los usuarios especificados del rol especificado. |
RemoveUsersFromRoles(String[], String[]) |
Quita los nombres de usuario especificados de los roles especificados. |
RoleExists(String) |
Obtiene un valor que indica si el nombre de rol especificado ya existe en el origen de datos del rol. |