我通过名为Marten的库与.NET应用程序一起使用postgres数据库,我有一个自定义IUserLoginStore
,它管理检索用户及其角色。这似乎工作正常,但我有设置授权问题。ASP.NET核心自定义基于角色的授权(自定义User.IsInRole)?
我使用认证通过谷歌和它工作正常:
var info = await _signInManager.GetExternalLoginInfoAsync();
var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent: false);
这个动作引发访问被拒绝的问题:
[HttpPost()]
[Authorize(Roles = "Admin")]
public JsonResult SubmitArticle([FromBody] ArticleInputModel input) {...}
我已经挖成的授权代码和问题似乎与默认ClaimsPrincipal
代码:
public virtual bool IsInRole(string role)
{
return false;
}
我是否应该实施自己的ClaimsPrinciple
版本并覆盖IsInRole
,并且如果我确实如何回到应用中?
private static void ConfigureSecurity(IServiceCollection services)
{
services.AddIdentity<User, Role>()
.AddUserValidator<UserValidator>()
.AddUserStore<MartenUserStore>()
.AddRoleStore<MartenRoleStore>()
.AddDefaultTokenProviders();
}
发布有关此内容github上为好,正在等待回应:https://github.com/aspnet/Mvc/issues/6100 – Andrew