私は、.NETアプリケーションでMartenというライブラリを介して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