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,因为如果用户从一个选项卡注销,他仍然在另一个选项卡中登录。我说的是登录两次,而不是在两个选项卡上打开系统。