ASP.NET Forms Auth Autorisation d'accès à un fichier spécifique dans le sous-répertoire lorsque tous les autres doivent être refusés
Je vais avoir des problèmes en permettant un Rôle spécifique d'accès à une page spécifique dans un sous-répertoire.
Mon ASP.NET l'application dispose d'un répertoire ~/Formes/Administration qui a un accès limité. Il existe un fichier ~/Formes/Administration/par Défaut.aspx que je veux donner 1 rôle de l'utilisateur, l'accès à l', ainsi que le rôle Admin.
Dans ~/Formes/Administration, j'ai un site web.fichier de config qui ressemble à ceci:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<authorization>
<allow roles="Administrator, User" />
<deny users="*"/>
</authorization>
</system.web>
<location path="Forms/Administration/Default.aspx">
<system.web>
<authorization>
<allow roles="Administrator, User, AdditionalUser" />
</authorization>
</system.web>
</location>
</configuration>
L'utilisateur Admin fonctionne très bien, mais AdditionalUser échoue toujours. J'ai essayé un certain nombre de choses - inscription de l'emplacement que
<location path="Forms/Administration/Default.aspx">
Et comme
<location path="~/Forms/Administration/Default.aspx">
Est le deny="*" à partir du premier générique de la règle en prenant précédent? J'ai essayé de changer
<deny users="*"/>
À
<deny users="?"/>
Mais qui finit par donner AdditionalUser accès à tout. Des Suggestions?
EDIT: j'ai essayé de mettre l'emplacement spécifique de permettre avant le générique de la règle de refus, dans le cas où l'ordre d'importance. Même problème.
Mise à JOUR: je suis clairement en manque de quelque chose ici: j'ai enlevé le nier * config, et à gauche seulement l'emplacement spécifique de la section. Alors, plutôt que de le laisser sur certains rôles, j'ai mis qu'on refuser à tout le monde (*). Cependant, il n'est pas nier moi quand j'ai de la connexion. J'ai même réduit la règle de ne pas être un fichier spécifique, mais s'appliquent à l'ensemble du répertoire, et il ne me refuse rien. Cependant, l'origine de la non-localisation des règles spécifiques pour faire le travail, donc je sais ce fichier de configuration est en cours de lecture.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="Forms/Administration">
<system.web>
<authorization>
<deny users="*" />
</authorization>
</system.web>
</location>
</configuration>
source d'informationauteur Matt
Vous devez vous connecter pour publier un commentaire.
Deux choses:
L'emplacement est par rapport au web.fichier de config, donc si votre site web.la config est déjà dans /Formes/Administration il devrait être corrigé pour être:
De préciser sur l'ordonnance d'autorisation et de refus de l'autorisation va à appliquer en fonction du premier match qu'il trouve, si l'ordre est très important. Par exemple:
Administrateur sera refusée car elle correspondait à la première entrée de refuser... même si vous avez spécifié pour permettre à l'utilisateur de l'Administrateur sur la ligne suivante. Afin de permettre seulement à l'Administrateur, la syntaxe correcte serait:
En Résumé
Si je lis ce que vous voulez correctement, c'est probablement le produit final que vous voulez: