【发布时间】:2017-04-06 21:51:14
【问题描述】:
我通过一个名为 Marten 的库和一个 .NET 应用程序使用 postgres 数据库,我有一个自定义的 IUserLoginStore 来管理检索用户及其角色。这似乎工作正常,但我在设置授权时遇到问题。
我正在通过谷歌使用身份验证,它工作正常:
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 上也发布了这个,等待回复:github.com/aspnet/Mvc/issues/6100
标签: asp.net authorization .net-core coreclr