ASP.NET Authentification Si returnUrl Null UserData est vide
-
14-11-2019 - |
Question
Salut, il y a un problème dans ma page de connexion.
Le scénario est,
Par exemple, je vais sur www.mydomain.com/admin/ il me redirige vers la page de connexion avec le paramètre returnurl comme celui-ci. www.mydomain.com/login.aspx?returnurl=%2FADMIN%2F.
Je me connecte avec le compte d'administration et tout fonctionne bien.
Mais si je vais à login.aspx directement, ce qui signifie qu'il n'y a pas de champ de requête returnurl.
Je me connecte avec le même compte d'administration, mais lorsque j'essaie d'aller www.mydomain.com/admin/ après m'être connecté à me rediriger vers la page de connexion.
Je fais des navigations comme ça. Qu'est-ce qui me manque?
//The code block that is logging in admin.
//check if there is a ReturnURL
if (QueryStringTool.IsExistAndNotNull("ReturnURL"))
{
Session["UserType"] = UserTypes.UserType.Admin;
Response.Redirect(FormsAuthentication.GetRedirectUrl(txtUserName.Text.Trim(), false));
}
//ReturnURL doesn't exists.
else
{
FormsAuthentication.SetAuthCookie(txtUserName.Text, cbUserRememberMe.Checked);
Response.Redirect("/Admin/Default.aspx");
}
La solution
Maintenant, essayez ceci. Remplacez votre code
//check if there is a ReturnURL
if (QueryStringTool.IsExistAndNotNull("ReturnURL"))
{
Session["UserType"] = UserTypes.UserType.Admin;
Response.Redirect(FormsAuthentication.GetRedirectUrl(txtUserName.Text.Trim(), false));
}
//ReturnURL doesn't exists.
else
{
FormsAuthentication.SetAuthCookie(txtUserName.Text, cbUserRememberMe.Checked);
Response.Redirect("/Admin/Default.aspx");
}
avec celui-ci
if("Check if User Is Authentic")
{
Session["UserType"] = UserTypes.UserType.Admin;
FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, cbUserRememberMe.Checked);
}
Cela fonctionnera pour l'ensemble de votre code. Redirige un utilisateur authentifié vers l'URL à l'origine ou l'URL par défaut.
Vérifier Default
page Load
un événement Session["UserType"]
Si l'utilisateur est Admin
puis redirigez-le vers la page d'administration
Autres conseils
Ceci est un exemple de web.config
<configuration>
<system.web>
<authentication mode="Forms">
<forms
name="401kApp"
loginUrl="/login.aspx"
cookieless="AutoDetect"
defaultUrl="myCustomLogin.aspx">
<credentials passwordFormat = "SHA1">
<user name="UserName"
password="07B7F3EE06F278DB966BE960E7CBBD103DF30CA6"/>
</credentials>
</forms>
</authentication>
</system.web>
</configuration><br/>
Positionner defaultUrl="yourdefaultpageURL"
dans web.config
OU
vous pouvez utiliser FormsAuthentication.RedirectFromLoginPage Méthode (String, Boolean)