1

ユーザーに特定のクレームを一時的に追加する必要があります。その値は変更される可能性があるため、ユーザーが正常にログインした場合にのみクレームを追加する必要があります。請求はHttpContext.Userにありますが、そこにはありません。私は何が間違っているのか分かりません。ここに私のログインコントローラがあります。ログイン後に追加されたクレームを取得できません

EDIT:ASP.NET Core 1.0とASP.NET IDを使用します。 Identity Serverを使用していません。

public async Task<IActionResult> Login(LoginIdentityModel lim) 
{ 
    var user = await _userManager.FindByEmailAsync(lim.username); 
    if (user != null) 
    { 
     Claim c = new Claim("ProductUploadRequest", "Allow"); 
     await _userManager.AddClaimAsync(user, c); 
     var result = await _signInManager.PasswordSignInAsync(user, lim.password, false, lockoutOnFailure: false); 
     if (result.Succeeded) 
     { 
      var usr = HttpContext.User;//claim not found here 
     } 
} 
+0

詳細情報が必要です。あなたはidentityServer4を使用していますか?承認フローを提供できますか? – Coemgen

+0

身元確認サーバーを使用していない –

+0

同じ問題を解決するためにすべての人にオクラホマ。ポリシーとクレームを使用してください –

答えて

1

this議論によると、HttpContext.UserSignIn呼び出しによって更新されていないと、それは仕様です:

通常ClaimsPrincipalをする場合にのみ、次の要求のために看板の結果で修飾されている

それはクッキーとともに返されます。

すぐにクレームを取得するための回避策として、試してみてください。

_userManager.GetClaimsAsync(user); 
2

await _signInManager.RefreshSignInAsync(user);は、後続の要求にHttpContext.Userの主張を更新する必要があります。

+0

私はこれを試してみましょう –

関連する問題