Аутентификация ASP.Net, если пустые UserData ReturnURL пустые - PullRequest
0 голосов
/ 15 мая 2011

Привет, есть проблема на моей странице входа.
Сценарий,
Например, я захожу на www.mydomain.com/admin/, где он перенаправляет меня на страницу входа с параметром ReturnURL, как этот. www.mydomain.com/login.aspx?ReturnURL=%2fAdmin%2f.
Я вхожу с учетной записью администратора, и все работает нормально.
Но если я перехожу к Login.aspx напрямую, это означает, что нет поля ReturnURL QueryString.
Я вхожу в систему с той же учетной записью администратора, но когда я пытаюсь зайти на www.mydomain.com/admin/ после входа, он перенаправляет меня обратно на страницу входа.

Я делаю навигацию вот так. Чего мне не хватает?

//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");
}

Ответы [ 2 ]

1 голос
/ 15 мая 2011

Теперь попробуйте это.Замени свой код

//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");
    }

с этим

if("Check if User Is Authentic")
{
Session["UserType"] = UserTypes.UserType.Admin;
FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, cbUserRememberMe.Checked);
}

Это будет работать для всего вашего кода.Перенаправляет прошедшего проверку пользователя обратно на первоначально запрошенный URL-адрес или URL-адрес по умолчанию.Проверьте на Default page Load событие Session["UserType"], если пользователь Admin, затем перенаправьте его на страницу администратора

1 голос
/ 15 мая 2011

Это образец 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/>

набор defaultUrl="yourdefaultpageURL" в web.config
ИЛИ
Вы можете использовать FormsAuthentication.RedirectFromLoginPage метод (String, Boolean)

...