Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 为已授权的用户设置FormsAuthentication.SetAuthCookie(model.UserName,model.RememberMe)_Asp.net_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

Asp.net 为已授权的用户设置FormsAuthentication.SetAuthCookie(model.UserName,model.RememberMe)

Asp.net 为已授权的用户设置FormsAuthentication.SetAuthCookie(model.UserName,model.RememberMe),asp.net,asp.net-mvc,asp.net-mvc-4,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我有以下登录操作方法:- public ActionResult Login(LoginModel model, string returnUrl) { MembershipProvider domainProvider; domainProvider = Membership.Providers["TestDomain1ADMembershipProvider"]; if (ModelState.IsValid) { if (domainProvider.Validat

我有以下登录操作方法:-

public ActionResult Login(LoginModel model, string returnUrl)

        {

MembershipProvider domainProvider;
domainProvider = Membership.Providers["TestDomain1ADMembershipProvider"];
 if (ModelState.IsValid)
{
 if (domainProvider.ValidateUser(model.UserName, model.Password))
 {
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
}
 else
 {
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return View(model);
}
 return RedirectToLocal(returnUrl);

}
return View(model);

}
以及以下登出:-

public ActionResult LogOff2()

        {FormsAuthentication.SignOut();

            return RedirectToAction("Index", "Home"); }
我面临的问题是,当用户在同一浏览器中打开指向登录页面的两个选项卡时。然后他从两个视图登录(我认为将创建两个身份验证cookie),然后如果他从一个选项卡注销(使一个cookie无效),另一个cookie仍然有效,用户可以在系统中导航。因此,在设置身份验证cookie之前,我需要检查用户是否已通过身份验证,如下所示:-

public ActionResult Login(LoginModel model, string returnUrl)
        {

if (Request.IsAuthenticated) {
return RedirectToLocal(returnUrl);

}

MembershipProvider domainProvider;
domainProvider = Membership.Providers["TestDomain1ADMembershipProvider"];
 if (ModelState.IsValid)
{
 if (domainProvider.ValidateUser(model.UserName, model.Password))
 {//code goes here..........
因为在同一个浏览器中插入两个cookie可能会有风险,因为用户可能会登录两次,如果他从一个选项卡上登录,他会认为他从整个系统中登录。而其他cookie在同一浏览器中可能仍然有效。那么有人能提出建议吗?
谢谢

好吧,cookies不依赖于选项卡,因此当用户在一个选项卡上注销时,他/她也将从另一个选项卡上注销


您可以为每个选项卡生成一个单独的cookie,但这是一个非常不寻常的场景,您的代码并不表示这种场景

我想你不明白我的问题。由于这是当前的行为,如果用户打开登录页面两次,在两个视图中键入用户名和密码,然后在两个视图中单击登录按钮。这似乎会生成两个cookie,因为如果用户从一个选项卡注销,他仍然在另一个选项卡中登录。我说的是登录两次,而不是在两个选项卡上打开系统。