我已经用尽谷歌寻找解决方案了,我声称我的应用程序中集成的身份验证都按预期工作。
我遇到的问题是,如果用户没有点击退出,他们将保持登录状态,声明我可以设置超时吗?比如用户登录后会在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>