这是我的配置部分:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="43200" cookieless="UseCookies" slidingExpiration="true" />
</authentication>
现在在控制器中我有:
FormsService.SignIn(userName, true);
var temp = User.Identity.IsAuthenticated;
有时将临时值设置为false,有时设置为true。当用户是我自己时(在系统中有效)。无论我的aspx页面中有这个值,我都有:
<% if (Context.User.Identity.IsAuthenticated)
{ %>
这总是解析为真。那么我在控制器中做错了什么?我如何检查用户是否在控制器中进行了身份验证?
非常感谢!
答案 0 :(得分:1)
您必须在验证和设置身份验证Cookie后重定向。在随后的请求中,用户将被真正认证。
public ActionResult LogOn()
{
FormsService.SignIn(userName, true);
return RedirectToAction("authenticated");
}