我刚刚开始思考一些 .NetCore Identity 的问题。但是,有几件事我仍然有点困惑。在一些例子中,我见过这样的事情:
services.AddAuthentication("mycookie")
.AddCookie("mycookie", options =>
{
options.Cookie.HttpOnly = true,
...
});
services.Configure<CookiePolicyOptions>(options =>
{
options.HttpOnly = true;
...
});
是CookiePolicyOptions
配置默认值和 CookieAuthorizationOptions
的 AddCookie
覆盖该特定 cookie 的默认值?
还有,上一个例子中的CookiePolicy配置有没有services.Configure<CookiePolicyOptions>
Configure中没有添加Cookie中间件有什么影响? (即 app.UseCookiePolicy();
)
最后,如果您设置了 Cookie 身份验证方案(如代码片段所示),您是否需要 app.UseCookiePolicy()
和 app.UseAuthentication()
中间件?
最佳答案
在 .net 核心中使用 cookie 身份验证本身并不是身份成员系统,而是一个可以用作独立身份验证方式或设置为更广泛身份配置的一部分的组件。
身份 -> 命名空间:Microsoft.AspNetCore.Identity
CookieAuthentication -> Microsoft.AspNetCore.Authentication.Cookies
身份:CookieConfiguration in Identity is an extension config method of the service Collection
CookieAuth:CookiePolicyOptions provides programmatic configuration for the CookiePolicyMiddleware.
services.Configure<CookiePolicyOptions>(options =>
{
options.HttpOnly = true;
...
});
这部分是Cookie政策在隐私、GDPR(欧洲)等方面的政策设置。
另一部分提供了根据您的应用程序的授权策略设置 cookie 的方法:
services.AddAuthentication("mycookie")
.AddCookie("mycookie", options =>
{
options.Cookie.HttpOnly = true,
...
});
不幸的是,这就是我所拥有的全部信息。我希望更多的人可以添加一些更深入的主题理解。
编辑 - 2022 年:
更全面的文章:https://www.reddit.com/r/dotnet/comments/we9qx8/a_comprehensive_overview_of_authentication_in/
关于authentication - CookiePolicyOptions 还是 CookieAuthenticationOptions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55247071/