我正在开发一个MVC应用程序,如果用户在之前的登录尝试中选择“记住我”,我需要跳过登录页面。我在login(get)操作中使用以下代码。
if (User.Identity.IsAuthenticated)
{
var data = new User();
data.CheckPass = false;
data.UserName = User.Identity.Name;
return Login(data);
}
return View();
在登录(发布)操作中,如果CheckPass
为false
并设置表单Cookie,则会跳过密码验证。
FormsAuthentication.SetAuthCookie(data.UserName,data.RememberMe);
return RedictToAction("Dashboard");
在我开始使用其他使用类似逻辑的应用程序之前,这就像魅力一样。每个应用程序都有不同的用户组。
我启动了第一个应用程序(http://localhost:1218/),提供了凭据(用户:ABC
,传递:xxx)并登录。然后关闭浏览器,重新启动应用程序,这次,系统直接根据需要导航到仪表板。
现在我推出了第二个应用(http://localhost:34239/)。这应该是启动登录页面,而不是尝试导航到仪表板页面。当我签入登录页面代码时,User.Identity.IsAuthenticated
为true
,User.Identity.Name
为ABC
。但是,第二个应用程序不存在此类用户。我已经检查了两次,确保它使用以前登录用户的用户详细信息,而不管用户属于哪个应用程序。
我也尝试了下面的徒劳。
<authentication mode="Forms">
<forms loginUrl="~/Login" timeout="2880" domain="www.mydomain.com" />
</authentication>