IsPersistent不工作PasswordSignInAsync标识ASP.NET核心 [英] IsPersistent not working PasswordSignInAsync Identity asp.net core

查看:49
本文介绍了IsPersistent不工作PasswordSignInAsync标识ASP.NET核心的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的网站中使用DotNet核心5和身份进行授权。我的身份有一个自定义类User

这是我的ConfigureServices:

 services.AddDbContext<ApplicationDbContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"), o => o.UseQuerySplittingBehavior(QuerySplittingBehavior.SplitQuery)));
            services.AddDefaultIdentity<User>(e =>
                {
                    e.Password.RequireDigit = false;
                    e.Password.RequireLowercase = false;
                    e.Password.RequireNonAlphanumeric = false;
                    e.Password.RequireUppercase = false;
                    e.Password.RequireLowercase = false;
                    e.Password.RequiredUniqueChars = 2;
                    e.Password.RequiredLength = 5;
                    e.SignIn.RequireConfirmedPhoneNumber = false;
                    e.SignIn.RequireConfirmedEmail = false;
                }).AddRoles<IdentityRole>().AddRoleManager<RoleManager<IdentityRole>>()
                .AddDefaultTokenProviders().AddEntityFrameworkStores<ApplicationDbContext>();
            services.AddControllersWithViews();

在我的配置中,我有:

app.UseAuthentication();
app.UseAuthorization();

这是我的登录控制器:

[ValidateAntiForgeryToken]
        [HttpPost("/Login")]
        public async Task<IActionResult> Login(LoginViewModel model)
        {
            if (ModelState.IsValid)
            {
                var result =
                    await _signInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, true);
                if (result.Succeeded)
                {
                    return Redirect(model.ReturnUrl);
                }
                else
                {
                    ModelState.AddModelError("", "Invalid Usename or password");
                    return View();
                }
            }
            else
            {
                return View();
            }
        }
但即使Model.RememberMe为true,登录也不是持久的,用户需要每隔20分钟登录一次。 我如何解决此问题?

推荐答案

尝试设置Cookie的ExpireTimeSpan。下面是将ExpireTime设置为1天的示例:

services.ConfigureApplicationCookie(options =>
{
    options.ExpireTimeSpan = TimeSpan.FromDays(1);
});

这篇关于IsPersistent不工作PasswordSignInAsync标识ASP.NET核心的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆