我有一个 Blazor 服务器应用程序和一个 AD B2C 身份验证。我已经配置了 Azure,应用程序运行良好。我还可以使用以下代码查看声明。
<AuthorizeView>
<Authorized>
<table style="border: 1px solid black;">
<tr style="border: 1px solid black; padding: 2px;">
<th style="border: 1px solid black; padding: 2px;">Claim Type</th>
<th style="border: 1px solid black; padding: 2px;">Value</th>
</tr>
@foreach (var item in context.User.Claims)
{
<tr style="border: 1px solid black; padding: 2px;">
<td style="border: 1px solid black; padding: 2px;">@item.Type</td>
<td style="border: 1px solid black; padding: 2px;">@item.Value</td>
</tr>
}
</table>
</Authorized>
</AuthorizeView>
我想访问 C# 类中的用户声明(不在 razor 文件中)并保存在数据库中。我怎样才能做到这一点?声明是否存储在像 HttpContext 这样的全局对象中,我可以从中检索这些声明?
答案 0 :(得分:2)
您可以使用 AuthenticationStateProvider 并通过 GetAuthenticationStateAsync 方法获取用户声明。 样本将是这样的
public class Temp
{
private readonly AuthenticationStateProvider _auth;
public Temp(AuthenticationStateProvider auth)
{
_auth = auth;
}
public async Task GetClaims()
{
var authState = await _auth.GetAuthenticationStateAsync();
var userClaims = authState.User.Claims;
}
}