Идентификация DotNet Core - он не запоминает пользователя - PullRequest
0 голосов
/ 21 октября 2018

Я хочу, чтобы мой сайт 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; }
    ....
}

1 Ответ

0 голосов
/ 24 октября 2018

Я нашел ответ.

Чтобы контролировать срок действия файла cookie авторизации, ваш custom UserStore должен реализовать интерфейс IUserSecurityStampStore ,не обычный IUserStore !

IUserSecurityStampStore запрашивает два дополнительных метода: SetSecurityStampAsync и GetSecurityStampAsync .И это ключ.

...