使用 SimpleMembership 开发一个 ASP.Net MVC 4 网站,即使用户已登录,有时也会调用 Login GET 控制器。到目前为止,这仅发生在开发期间(我们还没有进行 QA),并且仅在修改 . cshtml 页面。在修改 .cshtml 页面后偶尔会发生这种情况,但并非始终如一。
我已将日志记录添加到Login()
模板提供的方法中,并看到用户确实经过身份验证,并且具有登录用户应具有的所有角色。
[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()
合理?