2010-12-08 40 views
0

Il doit y avoir quelque chose qui manque dans ma compréhension du fonctionnement du système d'authentification/autorisation et de redirection de connexion de .NET. J'ai un admin/default.aspx page qui est réservé aux utilisateurs admin, je dois par exemple:.NET authentification autorisation rôles connexion redirct returnURL confusion

<configuration> 
    <system.web> 
    <authorization>  
     <allow roles="admin" />  
     <deny users="*" /> 
    </authorization> 
    </system.web> 
</configuration> 

Lorsque l'utilisateur obtient ici, s'il n'est pas un administrateur, il est redirigé vers la page de connexion comme spécifié dans le web.config:

<authentication mode="Forms"> 
    <forms loginUrl="Login.aspx" name="someName" timeout="60" path="/"> 
    </forms> 
</authentication> 

avec une URL de retour (qui ressemble ReturnUrl =% 2fAdmin% 2fDefault.aspx). Maintenant, si l'utilisateur se connecte à nouveau avec des informations d'identification qui ne correspondent pas à la spécification de rôle "admin", il est redirigé vers la page admin/default, puis de nouveau vers la page de connexion. Je suppose que tout fonctionne bien, mais il semblerait que je pourrais rediriger vers la page de connexion si un utilisateur n'est pas connecté, mais le rediriger vers une autre page (home ou par défaut) s'il est connecté mais pas adapter les exigences de rôle.

Comment pourrais-je procéder?

Merci à l'avance,

Rusty

Répondre

0

Vous pouvez le faire de deux façons:

  1. Ecrire un fournisseur d'authentification personnalisé dérivé du fournisseur de formulaires. Ecrire un HttpModule, je ne suis pas sûr quel événement serait préférable de piéger, car avant l'authentification, vous n'avez pas de rôle, après l'authentification le module d'authentification par formulaires vous redirigera déjà vers la page de connexion. l'identification de la réponse de redirection dans les événements ultérieurs peut être le chemin à parcourir. (ceci peut avoir pour effet secondaire que toutes les redirections vers la page d'ouverture de session pour un utilisateur authentifié iront à la page d'accueil des utilisateurs connectés)

+0

Nous vous remercions de votre réponse. En attendant, je suis venu avec un travail autour, en suivant les idées de ce blogpost: http://geekswithblogs.net/ranganh/archive/2005/04/25/37598.aspx, et il s'avère que c'est similaire à votre suggestion n ° 2 . Sur la page de connexion, je vérifie si l'utilisateur est déjà authentifié et s'il y a un retour URL - si c'est le cas, je redirige simplement vers la page d'accueil. J'aurais pensé qu'il y avait une solution plus formelle utilisant la configuration de sécurité de .Net, mais cela fonctionne pour l'instant. – rusty

+0

. La configuration de la sécurité des Nets est adaptée à «la plupart des gens la plupart du temps», mais elle était bien conçue pour l'extensibilité comme celle-ci! P.s. Si une réponse vous aide, n'oubliez pas de changer d'avis et d'accepter une réponse (même si c'est votre propre réponse) car les gens commencent à hésiter à aider les personnes qui n'acceptent pas ou n'acceptent pas les réponses. – stevenrcfox