如何在登录时将使用重定向到特定页面?

时间:2015-08-29 14:41:58

标签: c# asp.net asp.net-mvc-4

场景: - 假设用户打开链接

www.domainname.com/albums/

但要查看此页面,他应该通过身份验证过程。现在,如果auth cookie不可用或会话超时,我会将他重定向到登录页面。

但是一旦他对自己进行身份验证,我需要重定向到该页面,那么如何捕获他登陆登录页面的页面/

我正在使用ASP.Net MVC。

3 个答案:

答案 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