我一定很想念东西。请注意,我不使用身份。我遵循了this page
的“配置”部分在我的startup.cs文件中:
// in public void ConfigureServices(IServiceCollection services)
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = new PathString("/account/login/");
options.AccessDeniedPath = new PathString("/account/forbidden/");
options.SlidingExpiration = true;
options.ExpireTimeSpan = TimeSpan.FromHours(336);
});
// in public void Configure(IApplicationBuilder app, IHostingEnvironment env)
app.UseAuthentication();
然后我有一些以
结尾的登录逻辑await _httpContextAccessor.HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal,
new AuthenticationProperties {IsPersistent = true});
这可以正常工作并创建所需的cookie。
我不了解的是如何对特定端点强制执行身份验证? 以前,我会在终点添加[AllowAnonymous],以表示可以通过身份验证。但是在这里,似乎不知道我是否登录。
1)配置我的应用程序的最佳方法是什么,以便您必须经过身份验证才能访问它们?
2)如何知道用户是否已通过身份验证? (来自控制器)
3)我知道我可以通过中间件来实现所有这些功能,但是我惊讶的是没有内置的方法可以做到这一点。我错了吗?