我有一个MVC Core应用程序,即使用户处于活动状态,也会使用户超时。即使我点击链接并加载页面,会话也会超时。
我在Startup.cs的ConfigureServices函数中有一行:
services.Configure<IdentityOptions>(options =>
{
options.SecurityStampValidationInterval = TimeSpan.FromSeconds(30);
});
为了进行测试,此行将超时时间减少到30秒,并且确实具有该效果。
在我的MVC应用程序中,所有用户都已登录。如果用户未登录,则基本控制器类OnActionExecuting功能中的函数将使用访客帐户登录用户,如下所示:
public override void OnActionExecuting(ActionExecutingContext context)
{
// Ioc
this._signInManager = this.HttpContext.RequestServices.GetService(typeof(SignInManager<ApplicationUser>)) as SignInManager<ApplicationUser>;
// Get session-state
_sessionState = _ensureUserSignedIn();
// Call base-class functon
base.OnActionExecuting(context);
}
登录电话是:
// Sign-in
var result = this._signInManager.PasswordSignInAsync(acc.Username, Program.GuestPassword, true, lockoutOnFailure: false).WaitAndSpit();
会话状态是我自己的类,我存储在RedisCache中。我用这个值查找会话状态:
this.User.Identity.Name
在web.config中没有session-state或forms-authentication的部分。