2010-12-10 17 views
5

Estoy trabajando en la aplicación Asp.net donde tengo 4 funciones en mi aplicación. 1. Administrador 2. Usuario 3. Revendedor 4. Afiliado. Y estoy usando Autenticación de formularios para esto, todo funcionaba bien para un solo rol (Usuario). Pero ahora tengo 4 roles y no estoy obteniendo cómo manejar esto. Tengo 4 carpetas para diferentes usuarios. Si inicio sesión con la cuenta del revendedor y si cambio la url para el usuario, entonces también me permite acceder a la parte del usuario. Pero no quiero esto Necesito en mi aplicación que el usuario pueda acceder solo a su área de acceso. Significa Si su revendedor inició sesión, entonces solo puede acceder a las páginas de revendedor o a la misma carpeta, nada más.Autenticación de formularios de Asp.net

Ayúdenme a encontrar esta solución.

Respuesta

0

Es necesario configurar los ajustes de autenticación apropiados en un archivo web.config para cada carpeta que está restringiendo el acceso a, es decir

<authorization> 
    <deny users="?" /> 
    <allow roles="Administrators" /> 
    <deny users="*" /> 
</authorization> 

permitirán el acceso sólo a los usuarios validados con el papel de "Administradores".

+0

No necesita los usuarios denegados anónimos. Solo necesita los roles Permitir y Denegar todo. – Phill

+0

Es cierto, pero abrevia la validación un poco, ¿por qué intentar una búsqueda de función en un usuario anónimo? – Lazarus

+0

Simplemente curioso ... ¿por qué el voto hacia abajo? – Lazarus

1

Hay dos cosas que ver aquí. Antes que nada, restringir el acceso a cada carpeta por rol debería ser lo suficientemente sencillo si usa <location> elementos en su web.config, p.

<location path="Resellers"> 
    <system.web> 
     <authorization> 
      <allow roles="Reseller"/> 
      <deny roles="*"/> 
     </authorization> 
    </system.web> 
</location> 

<location path="Users"> 
    <system.web> 
     <authorization> 
      <allow roles="User"/> 
      <deny roles="*"/> 
     </authorization> 
    </system.web> 
</location> 
... 

También en sus páginas individuales, puede llamar a la función IsUserInRole para comprobar si su usuario está en el papel correcto para acceder a la página.

Es posible que desee obtener una copia de Beginning ASP.NET Security, tiene una gran información sobre cómo hacerlo.

+0

¿Debo negar todas las funciones y luego detener? – Lazarus

+0

@Lazarus Posiblemente ... Nunca puedo recordar todos los pormenores de la configuración del elemento de autorización. Los han cambiado. – PhilPursglove

+0

Creo que se procesan en orden de definición :) – Lazarus

0

En cada una de las carpetas, debe colocar un archivo web.config que restrinja el acceso al rol en cuestión. Por ejemplo, en los revendedores carpeta que tiene un web.config contiene:

<authorization> 
    <deny users="*"/> 
    <allow roles="Resellers"/> 
</authorization> 

Y así sucesivamente para las otras carpetas.

+0

¿Debo presionar el botón Denegar a todos los usuarios y detener? – Lazarus

0

uso, como a continuación código:

<location path="Users"> 
     <system.web> 
      <authorization> 
       <allow roles="Users"/> 
       <deny users="*"/> 
      </authorization> 
     </system.web> 
    </location> 
1

Puede utilizar el web.config para establecer el permiso o también puede obtener más granular y decorar la clase o método que desea bloquear de esta manera:

[PrincipalPermissionAttribute(SecurityAction.Demand, Role = @"Administrators")] 

Todo esto forma parte del administrador de roles que puede configurar. Comience leyendo el artículo this que explica qué hacer.

Cuestiones relacionadas