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

时间:2015-03-31 18:23:30

标签: c# asp.net-mvc owin

我们有一个使用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 个答案:

答案 0 :(得分:0)

我还没有测试过这个,但它应该在理论上起作用:

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

Use来电的排序非常重要。关于Owin的美妙之处在于它能够覆盖子路径上的任何行为。