Проверка подлинности файлов cookie Asp.Net Core 2.0 истекает раньше времени - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть приложение MVC Asp.Net Core 2.0, которое использует проверку подлинности cookie. Проблема в том, что сеанс истекает раньше времени и перенаправляет пользователя на путь входа в систему, заставляя его снова проходить аутентификацию.

Мой класс запуска:

Метод ConfigureServices:

const string schema = "adminScheme";

services.AddAuthentication(schema).AddCookie(schema, options =>
{
    options.AccessDeniedPath = new PathString("/Account/AcessoNegado");
    options.Cookie = new CookieBuilder
    {
        HttpOnly = true,
        Name = ".Admin.Security.Cookie",
        Path = "/",
        SameSite = SameSiteMode.Lax,
        SecurePolicy = CookieSecurePolicy.SameAsRequest
    };
    options.ExpireTimeSpan = TimeSpan.FromMinutes(480);
    options.LoginPath = new PathString("/Account/Login");
    options.LogoutPath = new PathString("/Account/Logout");
    options.ReturnUrlParameter = "RequestPath";
    options.SlidingExpiration = true;
});

при настройке метода:

 app.UseAuthentication();

Мой метод входа:

var cadastro = user.FirstOrDefault();
const string Issuer = "adminScheme";

List<Claim> claims = new List<Claim>
{
    new Claim(ClaimTypes.Name, cadastro.NomeUsuario, ClaimValueTypes.String, Issuer),
    new Claim("Idusuario",cadastro.Id.ToString(), ClaimValueTypes.String, Issuer),
    new Claim("IdtipoUsuario", cadastro.IdtipoUsuario.ToString(), ClaimValueTypes.String, Issuer)
};

ClaimsIdentity identity = new ClaimsIdentity(claims, "cookie");

ClaimsPrincipal principal = new ClaimsPrincipal(identity);

await HttpContext.SignInAsync(scheme: Issuer,
        principal: principal,
        properties: new AuthenticationProperties
        {
            IsPersistent = true,
            ExpiresUtc = DateTime.UtcNow.AddMinutes(480)
        });

return RedirectToLocal(returnUrl);

И я использую [Authorize] в моих контроллерах.

1 Ответ

0 голосов
/ 19 ноября 2018

Я только что попробовал твой код. Если вы используете версию 2.0.x, измените код, как показано ниже:

//ClaimsIdentity identity = new ClaimsIdentity(claims, "cookie");
ClaimsIdentity identity = new ClaimsIdentity(claims, "adminScheme");

А теперь у меня все работает безупречно.

Кстати, версия 2.0 уже достигла конца жизни 1 октября 2018 года. Предлагается перейти на 2.1.x

...