Request.IsAuthenticated如何在mvc4中正常工作

时间:2016-05-28 09:45:20

标签: asp.net-mvc

我在开始之前创建了2个使用登录表单的MVC项目 我使用此代码登录

 public ActionResult Login(AccountLog Usr)
    {
        AccountLog personindatabase = db.AccountLogs.FirstOrDefault(m => m.Usercode == Usr.Usercode);

                FormsAuthentication.SetAuthCookie(personindatabase.UserName, true);
                ViewBag.id = personindatabase.Usersid;
                return RedirectToAction("Main", "Main");}

当我运行程序时,我首先检查if(Request.IsAuthenticated)如果是真的返回视图,如果否则重定向到登录页面

 public ActionResult Main()
    {
        if (Request.IsAuthenticated)
        {
            return View();
        }

        return RedirectToAction("Login", "Account");

    }

它工作正常,但我注意到,如果我运行第一个程序并成功登录并关闭它没有登出并运行第二个程序未记录它打开,因为它记录的人这意味着如果我从第一个登录一,打开第二,它将打开罚款,反之亦然我如何区分2项目登录如何我可以替代Request.IsAuthenticated如果有任何问题不明确留下评论,以清除它能够帮助我

1 个答案:

答案 0 :(得分:0)

根据您刚才描述的内容,您尝试使用两个不同选项卡中的相同浏览器会话登录同一个应用程序,而无需注销第一个用户。

登录成功后,浏览器中会设置Authentication Cookie。每次都会将此cookie发送到服务器,以便服务器可以验证用户。

当您尝试使用其他帐户登录(或期望登录)第二个标签时,您已经看到第一个用户登录,因为该帐户的Authentication Cookie仍然存在于浏览器中。验证cookie仅在用户注销时才会过期。

所以你可以。

  1. 使用两种不同的浏览器(例如Chrome和Firefox)测试两个帐户
  2. 在尝试使用同一浏览器中的其他帐户登录之前,请先注销第一个帐户。
  3. 希望有所帮助!