2

J'ai la configuration suivante dans le web.config de mon application ASP.NET MVC:la difficulté à obtenir l'application ASP.NET MVC pour rediriger vers la page d'erreur pour les utilisateurs non autorisés

<authentication mode="Windows" /> 
<authorization> 
    <allow roles="MySecurityGroup"/> 
    <deny users="*"/> 
</authorization> 
<customErrors mode="On" defaultRedirect="Error.aspx"> 
    <error statusCode="401" redirect="Help.aspx"/> 
</customErrors> 

Tout fonctionne bien si vous êtes dans MySecurityGroup, mais si vous ne l'êtes pas, vous n'êtes redirigé ni vers Error.aspx ni vers Help.aspx. (Notez que Error.aspx vit dans les vues \ Shared en Help.aspx est dans les vues \ Home.) Tout ce que vous obtenez est l'erreur par défaut:

Server Error in '/' Application.

Access is denied.

Description: An error occurred while accessing the resources required to serve this request. The server may not be configured for access to the requested URL.

Error message 401.2.: Unauthorized: Logon failed due to server configuration. Verify that you have permission to view this directory or page based on the credentials you supplied and the authentication methods enabled on the Web server. Contact the Web server's administrator for additional assistance.

Qu'est-ce que je fais mal?

MISE À JOUR: Maintenant, mon web.config est configuré comme ça, et il ne fonctionne toujours pas:

<system.web> 
    <customErrors mode="On" defaultRedirect="Help.aspx"> 
    </customErrors> 
</system.web> 

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

<location path="Help"> 
    <system.web> 
     <authorization> 
      <allow users="*"/> 
     </authorization> 
    </system.web> 
</location> 

Notez que je peux accéder à MyApp/Aide très bien et je suis interdit correctement du reste du site, mais il ne redirige jamais vers la page d'aide automatiquement.

Répondre

1

Vous devez explicitement autoriser l'accès à d'autres groupes à Error.aspx et/ou Help.aspx afin qu'ils puissent accéder aux pages. De la façon dont vous l'avez configuré en ce moment, seuls les utilisateurs de MySecurityGroup peuvent accéder aux pages.

Vous aurez besoin de quelque chose comme ceci:

<location path="Error.aspx"> 
<system.web> 
    <authorization> 
    <allow users="*"/> 
    </authorization> 
</system.web> 
</location> 

et même pour Help.aspx. Vous pouvez également le faire au niveau du dossier.

+0

Donne un sens parfait, mais pour une raison quelconque cela ne fonctionne pas pour moi. J'ai mis ce code juste après la fermeture de la section originale , mais je n'obtiens pas de résultats différents. Pour simplifier, je ne m'inquiète même pas de Help.aspx, juste Error.aspx. – gfrizzle

0

Voulez-vous les pages d'erreur et d'aide gérées par mvc ou asp.net? Actuellement, vous traitez les pages comme des vues mvc mais vous avez des URL de redirection qui correspondent au pipeline asp.net. À une supposition déplacer l'erreur et l'aide dans le répertoire racine du site et cela devrait fonctionner

Questions connexes