Pregunta

Quiero restringir el acceso a una URL en particular a menos que el usuario sea miembro de 2 roles diferentes. En este caso, solo quiero otorgar acceso a esta URL si el usuario está en ambos informes Y Papel de archivo. ¿Hay alguna forma de hacer esto en ASP.NET?

<location path="testpage.aspx">
<system.web>
  <authorization>
    <allow roles="Reporting, Archiving"/>
    <deny users="*"/>
  </authorization>
</system.web>

Quiero algo como esto:

<location path="testpage.aspx">
<system.web>
  <authorization>
    <allow roles="Reporting & Archiving"/>
    <deny users="*"/>
  </authorization>
</system.web>

¿Fue útil?

Solución

Es un poco feo, pero puede heredar del proveedor de roles que está utilizando actualmente (SQLROLPROVIDER, WindowstokenRoleProvider, AuthorizationStoreLeProvider), anula GetRolesforuser, llame a la implementación base para obtener los roles y combinarlos según sea necesario allí. Entonces, obviamente, ponga su proveedor de roles personalizado en su web.config en elu003CroleManager> Sección de configuración.

Solo necesitaría anular el único método (y tal vez getUsersInrole) y combinarlos según sea necesario.

public override string[] GetRolesForUser( string username ) {
    List<string> roles = new List<string>( base.GetRolesForUser(username) );
    if( roles.Contains("Reporting") && roles.Contains("Archiving") ) {
        roles.Add("ReportingAndArchiving");
    }
    return roles.ToArray();
}

Otros consejos

Puede crear una función SQL que, dada una ID de usuario en particular, URL de página y una lista de roles permitidos (XML), devuelva un poco que indique si el acceso se otorga a esa URL y, posteriormente, usa eso para establecer un indicador que determinaría si determinaría si determinaría si determinaría si determinaría si determinaría si determinaría si determinaría Para mostrar que como una opción válida en un menú JavaScript o DHTML o lo que sea.

Puedes Implementar un proveedor de roles personalizado. Luego, puede definir el nuevo rol "falso" que informa y verificar si el usuario pertenece a informar y archivar el rol dentro del método iSuserInrole cuando se solicita el rol de informes de informes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top