Asp.net 基于酷睿 2.0 自定义 Cookie 的身份验证



我已经从 asp.net 核心 1.0 升级到 asp.net 核心 2.0 我需要基于 url 的身份验证来创建授权的 cookie。没有登录页面。 如果 url 包含某些令牌,我需要对请求进行身份验证,如果不将它们重定向到错误页面。我陷入了重定向循环。我的代码出了什么问题

配置服务方法

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = new PathString("/Error/");
options.AccessDeniedPath = new PathString("/Error/");
options.SlidingExpiration = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(20);
});

配置方法

app.UseAuthentication();
app.ValidateRequest(Configuration);

在验证请求中间件中

public Task Invoke(HttpContext context)
{
context.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,
principal,
new AuthenticationProperties
{
ExpiresUtc = DateTime.UtcNow.AddSeconds(expiration),
IsPersistent = true,
AllowRefresh = true,
IssuedUtc = DateTime.UtcNow,
});
return _next.Invoke(context);
}

[MiddlewareFilter(typeof(validaterequestPipeline))]
public class HomeController : Controller
{
[Authorize]
[HttpGet]
public IActionResult Index()
{
}
}

登录在http/localhost上工作正常,但一旦打开https/subdomain.domain.com就不起作用。 改变就是这样做

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(options =>
{
options.LoginPath = new PathString("/account/signin");
options.SlidingExpiration = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(20);
options.Cookie.SameSite = SameSiteMode.None;
});

options.Cookie.SameSite = SameSiteMode.None;

最新更新