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

C# 如何在用户登录时将使用重定向到特定页面?,c#,asp.net,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc 4,情景:- 假设用户打开链接www.domainname.com/albums/ 但要查看此页面,他应该通过身份验证过程。现在,若身份验证cookie不可用或会话超时,我将他重定向到登录页面 但一旦他验证了自己的身份,我需要重定向到那个页面,那个么如何捕获他从哪个页面登陆到登录页面呢/ 我正在使用ASP.Net MVC。请参阅此MSDN文章以解决您的问题:。另见: 在ASP.NET MVC项目中,当您使用[Authorize]修饰类或方法而授权失败时,站点会自动重定向到登录页面(使用web.con

情景:- 假设用户打开链接www.domainname.com/albums/

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

但一旦他验证了自己的身份,我需要重定向到那个页面,那个么如何捕获他从哪个页面登陆到登录页面呢/


我正在使用ASP.Net MVC。

请参阅此
MSDN
文章以解决您的问题:。另见:

在ASP.NET MVC项目中,当您使用[Authorize]修饰类或方法而授权失败时,站点会自动重定向到登录页面(使用web.config中指定的loginUrl)。此外,ASP.NET MVC框架中的某些内容将原始请求的URL作为ReturnUrl参数传递

您将在控制器中执行登录
POST
操作,类似下面的代码:

控制器

    [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);
    }

我还有一件事要和你核实..请参阅使用
进行身份验证。SetAuthCookie
,我正在设置cookie,但现在用户登录,但他没有单击注销链接,而是简单地关闭浏览器,现在在这样的cookie中,cookie不会被销毁,但会话在他再次出现时会过期,会话变量为空,但由于Cookie,他可以登录。。仅供参考,我正在使用非持久性cookie。我应该如何处理这个问题请将您的评论作为新问题发布,并在这里描述所有细节。此外,在调试后(当您停止调试模式或重新启动IIS会话时),您是否在托管网站或VS中遇到此问题?
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.";

}