【问题标题】:Claims Authentication - set time out声明身份验证 - 设置超时
【发布时间】:2015-09-13 10:23:29
【问题描述】:

我用尽了谷歌寻找解决方案,我声称身份验证集成到我的应用程序中,一切都按预期工作。

我遇到的问题是,如果用户不点击退出,他们将保持登录状态,我可以使用 Claims 设置超时吗?比如说用户登录后会在 60 分钟内自动注销?

这就是我配置 CLaims 身份验证的方式,这与您提供的代码示例不同:

 var userCredentials = new[]
        {
            new Claim("UserId", userProfile.UserId.ToString()),
            new Claim("Username", userProfile.UserName)
        };

        var id = new ClaimsIdentity(userCredentials, "Forms");

        var cp = new ClaimsPrincipal(id);
        var token = new SessionSecurityToken(cp);

        var sam = FederatedAuthentication.SessionAuthenticationModule;
        sam.WriteSessionTokenToCookie(token);

更新

好的,所以在被告知时间跨度后,我将其添加到我的 SessionSecurityToken 中,它的时间跨度为十分钟,如下所示:

  var token = new SessionSecurityToken(cp, TimeSpan.FromMinutes(10))

然而,当我调试它时,它显示的时间与我预期的完全不同,目前我在晚上 20:42(澳大利亚,墨尔本),但是当我查看 SessionSecurityToken 的有效从/有效到时显示作为

ValidFrom = {14/09/2015 10:42:49} ValidTo = {14/09/2015 10:52:49}

我不知道为什么?

这是我的配置中的内容:

<system.identityModel>
<identityConfiguration>
  <securityTokenHandlers>
    <add type="System.IdentityModel.Tokens.SessionSecurityTokenHandler, System.IdentityModel">
      <sessionTokenRequirement lifetime="00:10:00" />
    </add>
  </securityTokenHandlers>
</identityConfiguration>

【问题讨论】:

  • 也许我在这里遗漏了一些东西 - SessionSecurityToken 构造函数有一个覆盖,它提供了一个 TimeSpan,它允许您指定令牌的有效期:msdn.microsoft.com/en-us/library/hh158905%28v=vs.110%29.aspx
  • @BrendanGreen 感谢您的建议,我已经实现了这一点,但它并没有给我我所期望的,即未授权并重新定向回登录页面,而是保持登录状态?我已经更新了我的问题是哪个示例和网络配置,你有没有机会来看看我?

标签: asp.net-mvc-5 claims-based-identity


【解决方案1】:

正如您在问题中所说,您可以轻松地在 SessionSecurityToken 构造函数中添加生命周期作为时间跨度。但是您看到的时间与预期不同,因为 ValidFromValidTo 是 UTC 时间不是当地时间。因此墨尔本的时区是 UTC+10,因此 10 小时的不同是完全正常的。

【讨论】:

  • 我没有那个选项,我已经用代码修改了我的问题
  • 我已更新我的帖子以回答您更新后的问题。
  • 对,我看的时候是晚上 8 点,但有效期到当天上午 10 点,所以实际上应该过期了?
  • 设置 cookie 10 分钟后应该过期。 From 和 To 不是当地时间。如果您设置在晚上 8 点,则应在晚上 8 点 10 分到期。 UTC时间在全世界都是一样的。并且完全独立于位置。
  • 这就是我的想法,但它似乎并没有这样做。我登录去泡了杯咖啡,然后开会(大约离开我的办公桌一个小时)回来并点击了我的个人资料,但我仍然被授权?
猜你喜欢
  • 1970-01-01
  • 2012-07-03
  • 2020-06-28
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-09
相关资源
最近更新 更多