在 IdentityServer3 中将声明值设置为数组
set claim value as array in IdentityServer3
我们使用 IdentityServer3 作为身份提供者,我们的声明之一是权限。
但是当用户只有一个权限时,生成的 JWT 包含 属性,名称为 "permission",但值是简单的字符串,否则它是一个数组。我们如何将声明值 "permission" 声明为数组?
这里是 snipper 我们是如何填写声明的:
foreach (var permission in permissions)
{
claims.Add(new Claim(Scopes.SCOPE_PERMISSION, $"{permission.id}>>{permission.name}"));
}
Identity server自带值类型json
,所以"permission"属性可以封装为
claims.Add(
new Claim(
Scopes.SCOPE_PERMISSION,
JsonConvert.SerializeObject(permissions.Select(s => $"{s.id}>>{s.name}")),
"json"));
我们使用 IdentityServer3 作为身份提供者,我们的声明之一是权限。
但是当用户只有一个权限时,生成的 JWT 包含 属性,名称为 "permission",但值是简单的字符串,否则它是一个数组。我们如何将声明值 "permission" 声明为数组?
这里是 snipper 我们是如何填写声明的:
foreach (var permission in permissions)
{
claims.Add(new Claim(Scopes.SCOPE_PERMISSION, $"{permission.id}>>{permission.name}"));
}
Identity server自带值类型json
,所以"permission"属性可以封装为
claims.Add(
new Claim(
Scopes.SCOPE_PERMISSION,
JsonConvert.SerializeObject(permissions.Select(s => $"{s.id}>>{s.name}")),
"json"));