Question

Je veux restreindre l'accès à une URL particulière à moins que l'utilisateur est membre de 2 différents rôles. Dans ce cas, je veux seulement donner accès à cette URL si l'utilisateur est à la fois la déclaration rôle d'archivage. Est-il possible de le faire dans ASP.net?

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

Je veux quelque chose comme ceci:

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

Était-ce utile?

La solution

Il est un peu laid, mais vous pouvez hériter du fournisseur de rôle que vous utilisez actuellement (SqlRoleProvider, WindowsTokenRoleProvider, AuthorizationStoreRoleProvider), passer outre GetRolesForUser, appelez l'implémentation de base pour obtenir les rôles et les combiner comme il faut. Alors évidemment mettre votre fournisseur de rôle sur mesure dans votre web.config dans la section de configuration .

Vous auriez seulement besoin de passer outre une méthode (et peut-être getUsersInRole) et les combiner au besoin.

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();
}

Autres conseils

Vous pouvez créer une fonction SQL qui, étant donné un ID utilisateur particulier, URL de la page et la liste des rôles autorisés (XML), renvoie un bit indiquant si l'accès est accordé à cette URL, et utiliser ensuite que, pour définir un indicateur qui déterminerait si pour montrer que comme un choix valide dans un menu javascript ou DHTML ou autre.

Vous pouvez mettre en œuvre du fournisseur de rôle personnalisé. Ensuite, vous pouvez définir de nouveaux ReportingAndArchiving rôle « faux » et vérifier si l'utilisateur appartient à Reporting et archivage dans la méthode lorsque IsUserInRole rôle ReportingAndArchiving est demandé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top