如何在ASP.NET核心标识中设置登录过期

时间:2016-09-03 17:07:25

标签: security login asp.net-core asp.net-identity expired-sessions

参考:
Building Your First Web API with ASP.NET Core MVC and Visual Studio

方案:
(a)使用上述链接构建.NET Core 1.0 Web API解决方案 (b)该解决方案在调试模式下运行 (c)注册用户
(d)该用户登录
(e)许多小时后该用户仍然登录

仍在同一个Debug会话中,执行此代码:

@using Microsoft.AspNetCore.Identity

@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager

@if (SignInManager.IsSignedIn(User))
{
    <form asp-area="" asp-controller="Account" asp-action="LogOff" method="post" id="logoutForm" class="navbar-right">
        <ul class="nav navbar-nav navbar-right">
            <li>
                <a asp-area="" asp-controller="Manage" asp-action="Index" title="Manage">Hello @UserManager.GetUserName(User)!</a>
            </li>
            <li>
                <button type="submit" class="btn btn-link navbar-btn navbar-link">Log off</button>
            </li>
        </ul>
    </form>
}

我未满足的期望是上述用户的登录时间已超时;但是,Hello *example user*!Log off会再次呈现给导航栏;点击Log off会注销示例用户<​​/ em>。

那么如何在ASP.NET核心标识中设置到期时间呢 (a)登录用户可以在8小时等固定时间段后注销 (b)登录用户可以在一段固定的不活动时间(例如30分钟)后注销?

1 个答案:

答案 0 :(得分:6)

回答你的问题:

问:登录后的用户可以在8小时后的固定时间段内注销 答:将Cookie选项的ExpireTimeSpan设置为8小时。

问:登录后的用户可以在一段固定的不活动时间(例如30分钟)后注销吗? 答:将ExpireTimeSpan设置为30分钟,并将SlidingExpiration设置为True

阅读https://docs.asp.net/en/latest/security/authentication/cookie.html#adding-and-configuringhttps://docs.asp.net/en/latest/security/authentication/cookie.html#controlling-cookie-options了解详情。