场景: - 假设用户打开链接
但要查看此页面,他应该通过身份验证过程。现在,如果auth cookie不可用或会话超时,我会将他重定向到登录页面。
但是一旦他对自己进行身份验证,我需要重定向到该页面,那么如何捕获他登陆登录页面的页面/
我正在使用ASP.Net MVC。
答案 0 :(得分:2)
请参阅此MSDN
文章以解决您的问题:FormsAuthentication.RedirectFromLoginPage Method。另请参阅this link:
在ASP.NET MVC项目中,当您使用[Authorize]修饰类或方法并且授权失败时,该站点会自动重定向到登录页面(使用web.config中指定的loginUrl)。此外,ASP.NET MVC框架中的某些内容将原始请求的URL作为ReturnUrl参数传递。
您将在控制器中执行登录POST
操作,例如下面的代码:
<强> CONTROLLER 强>
[HttpPost]
[AllowAnonymous]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (User.GetUserInfo() != null)
{
return Redirect(Url.Home());
}
if (ModelState.IsValid)
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{
return Redirect(returnUrl);
}
else
{
return Redirect(Url.Home());
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
答案 1 :(得分:0)
public void Login_OnClick(object sender, EventArgs args)
{
if (Membership.ValidateUser(UsernameTextbox.Text, PasswordTextbox.Text))
FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text, NotPublicCheckBox.Checked);
else
Msg.Text = "Login failed. Please check your user name and password and try again.";
}
答案 2 :(得分:-3)
一种简单的方法是在将原始页面的URL重定向到登录页面时将其作为查询字符串传递。然后在成功验证后,将其重定向到该URL。
http://www.example.com/login.aspx?redirect=albums
http://www.example.com/login.aspx?redirect=/info/about.html