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");
}
Était-ce utile?

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)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top