asp.Net   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了asp.net – 手动更新表单认证券:大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
表单认证券的另一个问题即将到期过期.
我需要使用滑动到期设置为true.我已经阅读论坛,并且理解了精度损失的问题,如果请求仅在一半的到期时间之后才会更新该机票.

问题:
在我的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?
>为什么还不行?看来新机票永远不会更新.
>是否有其他原因可能,因为用户的表单验证过期太快,我应该调查?

谢谢,
问候,

解决方法

一个表单认证cookie只在一半到期时间过后自动更新.

来自微软:

这可能是你的问题.如果您的客户在9分钟内访问您的网站,并且不再访问10分钟,那么他们将被超时.即使您的会话超时设置为20分钟,也会发生这种情况.

手动更新您的票,就像您所做的一样,是没有必要的.你只需要启用滑动过期.如果“特定时间的一半”规则对您无效,那么您必须查看其他解决方案.

大佬总结

以上是大佬教程为你收集整理的asp.net – 手动更新表单认证券:全部内容,希望文章能够帮你解决asp.net – 手动更新表单认证券:所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。