2010-06-15 11 views
0

Je vois un nouveau comportement dans l'authentification par formulaires après la mise à niveau vers .NET 4.0. Contexte - Dans web.config, nous configurons l'authentification par formulaires, puis utilisons les balises <authorization pour refuser globalement l'accès aux utilisateurs anonymes/non authentifiés. Ensuite, nous autorisons explicitement l'accès à une page login.aspx en utilisant un tag <location. Généralement, cela fonctionne très bien, comme quand nous étions sur .NET 2.0 (3.5)..NET 4.0 Forms Modification de l'authentification?

Le problème se produit uniquement lorsque nous visitons le chemin racine du site, par exemple "http://myserver/". Notre document par défaut est configuré dans IIS pour être login.aspx. Sous .NET 4.0, en visitant cette URL, nous sommes redirigés vers "http://myserver/login.aspx?ReturnUrl=/". Si vous vous connectez à partir d'ici, vous êtes connecté et renvoyé à la page de connexion (beurk).

Je voulais juste poster ceci ici pour voir si quelqu'un d'autre éprouve cela. Il n'est pas répertorié sur toute la documentation "briser les changements" que j'ai pu trouver. Soit il me manque quelque chose, soit le module UrlAuthorization a changé et n'est plus "intelligent" sur les documents par défaut d'IIS.

Répondre

2

Vous ne devez pas avoir IIS par défaut à login.aspx. ASP.NET a ses propres mécanismes pour assurer l'accès authentifié.

En particulier pour toute demande non authentifiée à un contenu qui nécessite des utilisateurs authentifiés, il le redirigera vers la page spécifiée dans l'attribut loginUrl de l'élément Web.configauthentication\forms.

... 
<authentication mode="Forms" ...> 
    <forms name="login" loginUrl="login.aspx" ... /> 
</authentication> 
... 

(« login.aspx » est une valeur par défaut pour cette propriété)

+0

Je comprends ce que je peux faire ce jeu actuel des comportements de travail pour moi, en tordant certaines choses. Je suis juste en train d'essayer de trouver quelqu'un pour confirmer/refuser un changement non documenté dans ASP.NET de 3.5 à 4. Parlons de pages génériques autres que login.aspx. 4.0 comportement semble être: donné un site qui interdit globalement accès anonyme via '' Mais autorise l'accès anon à certaines ressources en utilisant les balises '' ... Alors vous ne pouvez pas définir un IIS accessible aux anon document par défaut, car il vous redirigera toujours vers une page de connexion auth. –

+0

@James Koch: Désolé, je ne sais rien de spécifique sur les changements liés dans le .NET 4. Mais si vous voulez que votre page par défaut soit accessible aux utilisateurs anonymes, pourquoi ne l'autorisez-vous pas via la balise '' ? – Regent

+0

Mes pages "inscription" et "connexion" * sont * autorisées par les balises ''. Toutefois, un utilisateur non authentifié ne peut pas accéder à l'aide de l'URL de document par défaut. ils sont redirigés comme si la ressource était protégée. Dans le cas particulier de login étant le doc par défaut, ils sont redirigés vers le login, ce qui ne semble pas être un problème, jusqu'à ce que vous réalisiez que c'est aussi un "ReturnUrl = /", alors devinez où vous finissez après vous être connecté? ... Dès la connexion. Encore une fois, tout à fait réparable, mais différent de 3.5. –