首页 新闻 会员 周边

ASP.NET Core: Cookie 选项 SlidingExpiration 的作用

0
悬赏园豆:30 [已解决问题] 解决于 2023-08-18 11:09

在下面的代码,将 SlidingExpiration 设置为 true 会产生什么样的效果?

services.AddAuthentication()
    .AddCookie(
        options =>
        {
            options.ExpireTimeSpan = TimeSpan.FromDays(15);
            options.SlidingExpiration = true;
        });
dudu的主页 dudu | 高人七级 | 园豆:30943
提问于:2023-08-18 08:12
< >
分享
最佳答案
0

SlidingExpiration设置为true会产生以下效果:

在身份验证过程中,每次用户与服务器进行通信时,身份验证的到期时间都会被延长。具体来说,如果用户在过期时间内与服务器进行了交互(例如发送了请求),则身份验证的到期时间会相应地延长。这样可以确保在用户持续活动时,其身份验证会一直保持有效。

在上述代码中,options.ExpireTimeSpan设置了身份验证的初始到期时间为15天。而options.SlidingExpiration = true表示启用滑动到期时间机制。因此,如果用户在过期时间内进行了交互(如发送请求),身份验证的到期时间会相应地延长15天。

通过使用滑动到期时间,可以使用户能够在一段时间内保持登录状态,前提是他们与服务器保持活动并持续进行交互。这种方式可以增强用户体验,避免频繁要求用户重新登录。

请注意,SlidingExpiration的使用需要谨慎。如果用户长时间不进行交互,超过了身份验证的初始到期时间(上述代码中为15天),则仍然需要重新进行登录。这样可以保证安全性,防止已离线但仍处于登录状态的用户访问敏感信息。

收获园豆:30
lanedm | 老鸟四级 |园豆:2378 | 2023-08-18 08:26

如果用户在过期时间内进行了交互(如发送请求),身份验证的到期时间会相应地延长15天。

从代码注释看,应该是在15天过期时间内并且在7.5天后才会自动延长15天吧?

    /// <summary>
    /// The SlidingExpiration is set to true to instruct the handler to re-issue a new cookie with a new
    /// expiration time any time it processes a request which is more than halfway through the expiration window.
    /// </summary>
    public bool SlidingExpiration { get; set; }
dudu | 园豆:30943 (高人七级) | 2023-08-18 10:59

@dudu: 假设过期时间是15天。在处理一个请求时,如果当前时间已经超过了过期时间的7.5天(即过期时间的一半以上),处理程序会重新发出一个新的cookie,新的过期时间将再延长15天。

lanedm | 园豆:2378 (老鸟四级) | 2023-08-18 11:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册