我使用以下内容创建了一个测试项目:
dotnet new razor --auth Individual --output Test
这将创建一个包含以下内容的 Startup.cs 文件:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlite(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<IdentityUser>()
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
我想种植一些用户和角色。用户和角色都将使用相同的存储(SQLite)。我正在使用一个名为Program
的静态类进行播种。
我可以播种用户,但是无法播种角色,因为上述代码似乎没有注入RoleManager
。
在ASP.NET Core 2.0中,使用以下内容:
services.AddIdentity<IdentityUser, IdentityRole>()
我猜测AddDefaultIdentity
是2.1版本中新加的,但问题在于它没有注入RoleManager
,那我该怎么办?
AuthorizationHandlerContext.User.IsInRole
吗?如果不能,那么我应该使用HttpContext.Current.User...
吗? - variableHttpContext.User
。我困惑的是 - 是否可以在没有身份验证的情况下使用角色(IsInRole等)。 - variable