林。 要检查如果用户已经验证过了,我用User.Identity.IsAuthenticated。 大多数时间它工作完美,但我不知道怎么了,有时它返回false即使用户有权威性。 我的web.config:User.Identity.IsAuthenticated使用asp.net 4.0和表AUTH返回false有时
<authentication mode="Forms">
<forms name=".xyz" loginUrl="~/" timeout="120" protection="All" path="/" slidingexpiration=true/>
</authentication>
在Global.asax中:
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
string cookieName = FormsAuthentication.FormsCookieName;
HttpCookie authCookie = Context.Request.Cookies[cookieName];
if (authCookie == null)
{
return;
}
FormsAuthenticationTicket authTicket = null;
try
{
authTicket = FormsAuthentication.Decrypt(authCookie.Value);
}
catch
{
return;
}
if (authTicket == null)
{
return;
}
string[] roles = authTicket.UserData.Split(new char[] { '|' });
FormsIdentity id = new FormsIdentity(authTicket);
GenericPrincipal principal = new GenericPrincipal(id, roles);
Context.User = principal;
}
和登录页面:
FormsAuthenticationTicket authTick = new FormsAuthenticationTicket(1, email.Text, DateTime.Now, DateTime.Now.AddDays(360), true, password.Text, FormsAuthentication.FormsCookiePath);
string encriptTicket = FormsAuthentication.Encrypt(authTick);
HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encriptTicket);
authCookie.Expires = DateTime.Now.AddDays(360);
Response.Cookies.Add(authCookie);
我也用在每5分钟Ajax请求。使会话保持活动状态,并且这也会重置auth超时,因为滑动灵感值。 我不知道它有什么问题。有时是同一会话,并且在同一分钟内,即使对于其他页面返回true,也会为一个页面返回false。我从来没有得到这个错误,但我的访问者声称这个问题。
你尝试Context.Request.IsAuthenticated? – VJAI
没有。它更可靠吗? – genesistr