Аутентификация ASP.Net, если пустые UserData ReturnURL пустые
Привет, есть проблема на моей странице входа.
Сценарий таков:
Например, я захожу на 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 ответа
Теперь попробуй это. Замени свой код
//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
страница Load
событие Session["UserType"]
если пользователь Admin
затем перенаправить его на страницу администратора
Это образец 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)