在浏览器更改时转到登录屏幕
本文关键字:登录 屏幕 浏览器 | 更新日期: 2023-09-27 18:24:06
我正在创建一个MVC应用程序,其中有一个登录屏幕。当用户成功登录时,他能够看到他/她的主屏幕。此时,如果我在另一个浏览器中打开URL,则用户已经登录。我想要的是,登录屏幕应该出现在不同浏览器中打开的URL上。
这是我的LoginController索引方法:
[AllowAnonymous]
public ActionResult Index()
{
return View();
}
这是登录功能:
[HttpPost]
[AllowAnonymous]
public ActionResult LogIn(string email, string password)
{
}
在web.config中,我有以下内容:
<authentication mode="Forms">
<forms loginUrl="~/Login/LogIn" timeout="2880" />
</authentication>
Forms身份验证使用cookie来跟踪经过身份验证的用户。Cookie在浏览器屏幕和选项卡之间共享。这就是所有浏览器的工作方式,完全是意料之中的行为。你将在所有主要网站上观察到相同的行为。
如果你想实现这一点,你必须发明自己的方法来跟踪经过身份验证的用户,而不是依赖于内置的表单身份验证机制。IIRC Forms Authentication还允许在url中发送当前已验证的用户,但我不确定这是否与ASP.NET MVC路由很好地配合使用:
<authentication mode="Forms">
<forms loginUrl="~/Login/LogIn" timeout="2880" cookieless="UseUri" />
</authentication>
主屏幕应该只对登录的用户可用,因此您需要删除主屏幕操作(Index
?)上的[AllowAnonymous]
并添加[Authorize]
属性;如果用户尝试在没有登录的情况下导航到此处,他们将通过标准表单身份验证过程重定向到登录屏幕。
登录视图应该是应用程序的默认视图吗?如果是这样,您应该为映射到LoginController
LogIn
操作的空url添加一个路由。