大佬教程收集整理的这篇文章主要介绍了asp.net – 手动更新表单认证券:,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
问题:
在我的webconfig我有如下:
<authentication mode="Forms"> <forms timeout="20" name="SqlAuthCookie" protection="All" slidingExpiration="true" /> </authentication> <sessionState timeout="20" /> <authorization>
只有当20分钟内没有请求时,用户才能注销并重定向到login.aspx.问题是用户正在发出请求,仍然被抛出到登录页面.这不应该发生.我想到的是为每个请求手动重置SqlAuthCookie.
以下是我的代码它在context.AcquirerequestState上调用.
void context_AcquirerequestState(object sender,EventArgs E) { httpContext ctx = httpContext.Current; ResetAuthCookie(ctX); } private void ResetAuthCookie(httpContext ctX) { httpCookie authCookie = ctx.request.Cookies[FormsAuthentication.FormsCookiename]; if (authCookie == null) return; FormsAuthenticationTicket ticketOld = FormsAuthentication.Decrypt(authCookie.value); if (ticketOld == null) return; if (ticketOld.Expired) return; FormsAuthenticationTicket ticketNew = null; if (FormsAuthentication.SlidingExpiration) ticketNew = FormsAuthentication.RenewTicketIfOld(ticketOld); if (ticketNew != ticketOld) StoreNewCookie(ticketNew,authCookie,ctX); } private void StoreNewCookie(FormsAuthenticationTicket ticketNew,httpCookie authCookie,httpContext ctX) { String hash = FormsAuthentication.Encrypt(ticketNew); if (ticketNew.IsPersistent) authCookie.Expires = ticketNew.Expiration; authCookie.Value = hash; authCookie.httpOnly = true; ctx.Response.Cookies.Add(authCookiE); }
我的问题是:
>是错误还是可接受的解决方案,重置每个请求的cookie?
>为什么还不行?看来新机票永远不会更新.
>是否有其他原因可能,因为用户的表单验证过期太快,我应该调查?
谢谢,
问候,
以上是大佬教程为你收集整理的asp.net – 手动更新表单认证券:全部内容,希望文章能够帮你解决asp.net – 手动更新表单认证券:所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。