私はOpenIddict for token authenticationを使用しています。昨日私がuserManager.FindByNameAsync(request.Username)
と呼ぶとき、私は役割を持つユーザーを得ます。
今日、私は私がawait userManager.GetRolesAsync(user);
と役割をロードしようと、私は、ユーザーが役割を有することを意味する数3の配列を取得= 0userManager.FindByNameはロールを返しません
役割のプロパティ数を持つユーザーを取得します。
私は何が変更されたかわかりませんが、FindByNameAsync関数でどのようにユーザーをロールで読み込むことができますか?
完全なコード:
[HttpPost("token"), Produces("application/json")]
public async Task<IActionResult> Exchange(OpenIdConnectRequest request)
{
Debug.Assert(request.IsTokenRequest(),
"The OpenIddict binder for ASP.NET Core MVC is not registered. " +
"Make sure services.AddOpenIddict().AddMvcBinders() is correctly called.");
if (request.IsPasswordGrantType())
{
var user = await userManager.FindByNameAsync(request.Username); //roles count is 0
if (user == null)
{
return BadRequest(new OpenIdConnectResponse
{
Error = OpenIdConnectConstants.Errors.InvalidGrant,
ErrorDescription = "The email/password couple is invalid."
});
}
var roles = await userManager.GetRolesAsync(user); //roles count is 3
私はただ.Include(クレーム)などを入力するだけで、実際にはわかりません。 – Hristo
あなたの意見を表明するために侮辱は必要ないと思います。 'Include'拡張を使いたい場合は、独自のストア(公式のEFストアから派生することができる)を作成し、ユーザインスタンスを返すメソッドをオーバーライドする必要があります。 – Pinpoint
これは完全に間違って作成されました。あなたは何らかの形で半分を取得します。誰がこのアイデアが良いと思ったのですか?パフォーマンス?一方、開発コミュニティの半分に癌を渡すとパフォーマンスが低下します – Hristo