Blazor server中的Claims数量是没有限制的。只要用户提供了符合要求的Claims,就可以添加任意数量的Claims。
以下是一个示例,展示如何添加特定的Claim:
// 在IdentityServer中,部署服务来为用户颁发Jwt荷载,该荷载包含指定的Claim
// 然后在Blazor服务端中使用HttpContext以及Microsoft.AspNetCore.Authentication.JwtBearer.Package包内的JwtSecurityTokenHandler解密Jwt
// 并存储User对象中的所有声明,供请求调用调用时使用
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using Microsoft.AspNetCore.Mvc;
public class UserController : Controller
{
[Authorize]
public IActionResult GetProfile()
{
var accessToken = HttpContext.GetTokenAsync("access_token").Result;
var handler = new JwtSecurityTokenHandler();
var token = handler.ReadJwtToken(accessToken);
var claims = token.Claims;
//在这里添加和删除特定的Claim,例如
var customClaim = new Claim("customClaimType", "customClaimValue");
((ClaimsIdentity)User.Identity).AddClaims(claims);
return Ok(User.Identity.Name);
}
}
无论用户在IdentityServeer中颁发了多少Claim,都可以将其添加到Blazor server的User对象中。