RHa*_*ris 5 authentication cookies startup asp.net-core asp.net-core-middleware
我刚刚开始思考一些 .NetCore Identity 的问题。然而,有一些事情我仍然有点困惑。在一些例子中我见过这样的事情:
services.AddAuthentication("mycookie")
.AddCookie("mycookie", options =>
{
options.Cookie.HttpOnly = true,
...
});
services.Configure<CookiePolicyOptions>(options =>
{
options.HttpOnly = true;
...
});
Run Code Online (Sandbox Code Playgroud)
是否CookiePolicyOptions配置默认值并覆盖该特定 cookie 的默认值CookieAuthorizationOptions?AddCookie
services.Configure<CookiePolicyOptions>另外,如果Configure中没有添加Cookie Middleware的话,上例中的CookiePolicy配置还有作用吗?(IE app.UseCookiePolicy();)
最后,如果您设置 Cookie 身份验证方案(如代码片段所示),是否需要 和 app.UseCookiePolicy()中间件app.UseAuthentication()?
CookiePolicyOptions是Cookie 策略中间件的一部分:
使用提供给 Cookie 策略中间件的 CookiePolicyOptions 来控制 cookie 处理的全局特征,并在附加或删除 cookie 时挂钩到 cookie 处理处理程序。
services.Configure<CookiePolicyOptions>()其本身不做任何事情。这些CookiePolicyOptions选项仅CookiePolicyMiddleware在您使用时注入的内被询问app.UseCookiePolicy()。
与几乎所有 ASP.NET Core DI 一样,您可以通过两种方式指定选项:
使用允许指定选项的重载:
app.UseCookiePolicy(new CookiePolicyOptions { HttpOnly = true, ... })
使用调用Configure<TOptions>:
services.Configure<CookiePolicyOptions>(options => { options.HttpOnly = true; ... });
在策略选项中,您可以设置最小 SameSite 模式,以及应用程序发出的 cookie 是否应该是安全的和/或 HttpOnly,并在需要同意时配置一些回调,等等。
中间件会将该策略应用于您的应用程序设置的所有 cookie,因此可能会覆盖您为身份验证 cookie 配置的内容。
另请参阅上面链接的文档:
根据下面的矩阵,的 Cookie 策略中间件设置
MinimumSameSitePolicy可以影响设置中的设置Cookie.SameSite。CookieAuthenticationOptions
| 最小同站点策略 | Cookie.SameSite | 结果 Cookie.SameSite 设置 |
|---|---|---|
| SameSiteMode.None | SameSiteMode.None SameSiteMode.Lax SameSiteMode.Strict |
SameSiteMode.None SameSiteMode.Lax SameSiteMode.Strict |
| SameSiteMode.Lax | SameSiteMode.None SameSiteMode.Lax SameSiteMode.Strict |
SameSiteMode.Lax SameSiteMode.Lax SameSiteMode.Strict |
| SameSiteMode.Strict | SameSiteMode.None SameSiteMode.Lax SameSiteMode.Strict |
SameSiteMode.Strict SameSiteMode.Strict SameSiteMode.Strict |
| 归档时间: |
|
| 查看次数: |
4636 次 |
| 最近记录: |