使用SimpleMembership开发ASP.Net MVC 4网站时,即使用户已登录,有时仍然会调用Login GET控制器。到目前为止,这种情况只在开发过程中发生(我们还没有进行QA测试),并且只会在修改.cshtml页面后偶尔发生,而不是一贯如此。
我已经向模板提供的Login()方法添加了日志记录,并查看用户确实已通过身份验证,并具有登录用户应具有的所有角色。请注意,保留HTML标记,但不要添加任何解释。
我已经向模板提供的Login()方法添加了日志记录,并查看用户确实已通过身份验证,并具有登录用户应具有的所有角色。请注意,保留HTML标记,但不要添加任何解释。
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
if (User.Identity.IsAuthenticated)
{
logger.Error("User " + User.Identity.Name + " is authenticated shown login form. Roles: " + string.Join(", ", Roles.GetRolesForUser(User.Identity.Name)));
// Temporary work-around: WebSecurity.Logout();
}
ViewBag.ReturnUrl = returnUrl;
return View();
}
问题
- 是什么导致了这种行为?
- 在生产系统中是否可能出现这种情况,例如应用程序域被回收时?
- 从安全角度来看,在返回登录视图之前调用
WebSecurity.Logout()
的解决方法是否可靠?