【问题标题】:ASP.NET Authentication sliding expiry time on custom ticket自定义票证上的 ASP.NET 身份验证滑动到期时间
【发布时间】:2011-06-08 08:10:10
【问题描述】:

我正在使用以下代码创建自己的身份验证票:

string formsCookieStr = string.Empty;
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
            1,                              // version
            username,                       // user name
            DateTime.Now,                   // issue time
            DateTime.Now.AddMinutes(30),    // expires
            false,                          // Persistence
            userRoleData                    // user data
    );
formsCookieStr = FormsAuthentication.Encrypt(ticket);
HttpCookie FormsCookie = new HttpCookie(FormsAuthentication.FormsCookieName, formsCookieStr);
HttpContext.Response.Cookies.Add(FormsCookie);

我希望过期是滑动过期 - 每次客户端发送请求时,过期应重置为 30 分钟。但是,我只在用户第一次登录时创建票证。ASP.NET 会自动为我保持滑动到期时间,还是我需要“手动”做一些事情来实现滑动到期?

【问题讨论】:

    标签: asp.net forms-authentication


    【解决方案1】:

    这是在 web.config 的 forms 部分中配置的。滑动过期的工作方式是,在每个请求上,ASP.NET 引擎通过增加超时来重写身份验证 cookie:

    <authentication mode="Forms">
      <forms 
          loginUrl="~/Account/LogOn" 
          timeout="2880" 
          slidingExpiration="true" 
      />
    </authentication>
    

    但是请注意,启用滑动过期是ASP.NET Security Practices 中被视为不好的做法之一。

    【讨论】:

    • 谢谢。但可以肯定的是,不使用自定义票证时的默认设置是滑动到期,否则无论他们的最后一个请求有多最新,用户都会被注销?我没有观察到这种行为,文档说滑动到期是默认设置。默认情况下,我的自定义票证是否会滑动到期? (我在 web.config 中没有slidingExpiration 设置)
    • “滑动过期的工作方式是,在每个请求上,ASP.NET 引擎通过增加超时来重写身份验证 cookie”...... 不完全正确,因为 ASP.net 仅在以下情况下重写身份验证票证超过一半的超时值已经过去。 weblogs.asp.net/rajbk/archive/2004/10/11/241080.aspx
    • @BrazenTongue - 该链接截至 2017 年 2 月已失效,是否可以提供替代品?
    • “如果发出请求并且超过一半的超时间隔已经过去,则滑动到期会重置有效身份验证 cookie 的到期时间。” docs.microsoft.com/en-us/dotnet/api/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多