asp.net – 手动更新表单认证券:
|
表单认证券的另一个问题即将到期过期.
问题: <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? 谢谢, 解决方法一个表单认证cookie只在一半到期时间过后自动更新.来自微软:
这可能是你的问题.如果您的客户在9分钟内访问您的网站,并且不再访问10分钟,那么他们将被超时.即使您的会话超时设置为20分钟,也会发生这种情况. 手动更新您的票,就像您所做的一样,是没有必要的.你只需要启用滑动过期.如果“特定时间的一半”规则对您无效,那么您必须查看其他解决方案. (编辑:长春站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – axd和ashx处理程序之间的区别
- 在ASP.NET RadioButtonList ListItem上设置CSS类
- asp.net Gridview,1记录跨度两行
- asp.net-mvc – Gzip压缩无法运行ASP.net MVC5
- asp.net-ajax – ASP.Net AJAX UpdatePanel无法触发Selecte
- asp.net-mvc-3 – MVC3 Html.ActionLink Post
- 如何在ASP.NET Web应用程序中打开一个SectionGroup?
- asp.net汉字转拼音和获取汉字首字母的代码
- ASP.NET中的超链接控件和链接控件有什么区别?
- asp.net – 我如何使用AJAX来确定用户的会话是否已过期,然后
- asp.net-mvc – 在ajax请求中返回PDF
- 在ASP.NET中拒绝用户时,’CustomIdentity’上的S
- asp-classic – 哪里可以存储经典ASP的连接字符串
- asp.net中利用Jquery+Ajax+Json实现无刷新分页的
- ASP.NET成员:拒绝用户阻止CSS,页面无法正确呈现
- asp.net-mvc – MVC 5 OWIN登录声明和Antiforger
- asp.net-mvc-4 – 如何开发一个ASP.NET Web API接
- 如何排序. .NET中的resx(资源文件)
- asp.net-mvc – 使用CORS在WebAPI中将text / pla
- .NET WebApi jsonapi.org支持
