是否可以配置 OWIN Cookie 身份验证以防止某些 URL 影响滑动过期?

Posted

技术标签:

【中文标题】是否可以配置 OWIN Cookie 身份验证以防止某些 URL 影响滑动过期?【英文标题】:Can you configure OWIN Cookie Authentication to prevent certain URLs from affecting sliding expiration? 【发布时间】:2015-06-05 05:05:07 【问题描述】:

我们有一个使用 OWIN Cookie 身份验证的 ASP.NET MVC 5 应用程序,具有滑动到期。在客户端,我们有一个脚本,它每分钟轮询 Web 服务以获取通知。我们希望防止该 Web 服务调用导致身份验证令牌过期向前滑动。有什么办法吗?

我正在考虑在 OnValidateIdentity 处理程序中实现我自己的自定义滑动到期方法,但在该方法中设置 ExpiresUtc 似乎并不会真正影响令牌的到期日期。

app.UseCookieAuthentication(new CookieAuthenticationOptions

    Provider = new CookieAuthenticationProvider
    
        OnValidateIdentity = cookieValidateIdentityContext =>
        
            cookieValidateIdentityContext.Properties.ExpiresUtc = DateTime.UtcNow.AddMinutes(-1);
            return Task.FromResult(0);
        
    ,

    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    AuthenticationMode = AuthenticationMode.Active,
    LoginPath = new PathString("/"),
    SlidingExpiration = false,
    LogoutPath = new PathString("/Sessions/Logout")
);

感谢任何帮助!

【问题讨论】:

【参考方案1】:

我没有对此进行测试,但理论上它应该可以工作:

app.Use("/path1", app2 => app2.UseCookieAuthentication(...));
app.Use("/path2", app3 => app3.UseCookieAuthentication(...));
app.UseCookieAuthentication(...);

Use 调用的顺序很重要。 Owin 的美妙之处在于它能够覆盖子路径上的任何行为。

【讨论】:

你的意思是app.Map("/path1", ...) 吗? 几乎一样:***.com/questions/35559763/…

以上是关于是否可以配置 OWIN Cookie 身份验证以防止某些 URL 影响滑动过期?的主要内容,如果未能解决你的问题,请参考以下文章

Cookie 持久性在 OWIN 身份验证中不起作用

Owin cookie身份验证设置cookie未保存在浏览器中

Web API 2 OWIN Bearer Token cookie的用途?

在 OWIN 托管的 SignalR 实现中接受 ASP.NET 表单身份验证 cookie?

是否可以按用户设置 ASP.NET Owin 安全 cookie 的 ExpireTimeSpan?

IsPersistent 在 OWIN Cookie 身份验证中的工作原理