我希望DotNet Core网站能够记住登录用户数天甚至数周。 但事实并非如此。 20分钟。这就是全部。
我已经尝试了所有可能的选项。不起作用。
我的所有普通DotNet和OWIN网站都可以这样做。 DotNetCore-不!请帮忙 !!!!!!
更新:我已经为用户类添加了登录代码(这是典型的)。
public void ConfigureServices(IServiceCollection services)
{
services.AddIdentity<Core.Client.API.Models.User, Core.Client.API.Models.UserRole>().AddDefaultTokenProviders();
services.Configure<IdentityOptions>(options =>
{
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(30);
options.Lockout.MaxFailedAccessAttempts = 10;
options.Lockout.AllowedForNewUsers = true;
});
services.ConfigureApplicationCookie(options =>
{
options.Cookie.HttpOnly = true;
options.Cookie.Name = "**********.Auth";
options.ExpireTimeSpan = TimeSpan.FromDays(30);
options.LoginPath = "*******";
options.AccessDeniedPath = "**********";
options.SlidingExpiration = true;
});
services.AddAntiforgery();
services.AddMemoryCache();
services.AddTransient<IUserStore<Core.Client.API.Models.User>, Core.Logic.Services.UserService>();
services.AddTransient<IRoleStore<Core.Client.API.Models.UserRole>, Core.Logic.Services.UserRoleService>();
services.AddTransient<Core.Storage.Api.IUserStore, Core.Db.Services.UserStore>();
services.AddMvc().SetCompatibilityVersion(Microsoft.AspNetCore.Mvc.CompatibilityVersion.Version_2_1);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
//SignIn Code
public async Task<ActionResult> Login()
{
await _signInManager.SignOutAsync();
var u = await _userManager.FindByNameAsync("UserName");
if(u != null)
{
await _signInManager.SignInAsync(u, true);
}
return new RedirectToActionResult(nameof(HomeController.Index), "Home", null);
}
//User class
public class User : IIdentity
{
public Guid Id { get; set; } = Guid.NewGuid();
public bool IsAuthenticated { get; set; }
public string AuthenticationType { get; set; }
public string Name { get; set; }
....
}
答案 0 :(得分:0)
我找到了答案。
为了控制授权Cookie的生存期,您的自定义 UserStore 应该实现 IUserSecurityStampStore 接口,而不是普通的 IUserStore !
IUserSecurityStampStore 要求另外两种方法: SetSecurityStampAsync 和 GetSecurityStampAsync 。 这就是线索。