【发布时间】:2019-04-19 23:12:24
【问题描述】:
我有一个使用 Cookie 身份验证的 MVC Asp.Net Core 2.0 应用程序。问题是会话提前过期并将用户重定向到登录路径,迫使他再次进行身份验证。
我的创业班:
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]。
【问题讨论】:
标签: c# authentication asp.net-core-2.0 session-cookies