【发布时间】:2021-11-02 12:29:28
【问题描述】:
我有一个启用了身份的 ASP.NET CORE MVC 3.1 应用程序:
services.AddIdentity<IdentityUser,IdentityRole>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
数据库上下文继承自身份:
ApplicationDbContext : IdentityDbContext
启动配置:
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
但是,在浏览应用程序时,它不会强制执行身份验证。但是,如果我使用 services.AddDefaultIdentity,它可以工作,但我失去了访问 RolManager 以获取经过身份验证的用户角色的功能。
您能否告知我需要做什么来强制执行身份验证?
【问题讨论】:
-
您是否使用
AuthorizeAttribute标记了您的控制器/页面? -
@Marco:我没有。我希望在授权发生之前进行身份验证,不是吗?在应用程序强制授权之前应该有一个会话 cookie。使用默认身份,控制器未标记授权属性,但仍强制执行身份验证。
-
@Marco:那么可以使用这种工作方式,更具体地说,使用 authorize 来装饰控制器吗?我没有任何具体要求,只是希望身份验证/授权能够正常工作。
-
我给你两种可能性。让我写一个答案
标签: c# asp.net-core-mvc asp.net-identity asp.net-core-3.1