我有angular 12的前端和ASP。. NET Core 5后端。我正在通过JWT令牌传输角色。我希望角色以整数形式传递,因此不需要硬核角色名称。前端本身将有一个枚举,这将使我更容易检查这些水平菜单设置,只有管理员可以使用if (user.role === Role.Administrator)
等。
问题是没有new("role", user.Role)
这样的过载。如果我执行user.Role.ToString()
,它将发送Administrator
,这是键而不是值1
。
public class User
{
public string Id { get; set; }
public string Email { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public Role Role { get; set; }
}
public enum Role
{
Administrator = 1,
DepartmentAdministrator = 2,
User = 3
}
public Task GetProfileDataAsync(ProfileDataRequestContext context)
{
var sub = context.Subject.GetSubjectId();
var user = _userRepository.FindById(sub);
var claims = new List<Claim>
{
new("username", user.Username),
new("email", user.Email),
new("role", user.Role) // cannot be int
};
context.IssuedClaims = claims;
return Task.CompletedTask;
}
可以强制类型转换:
int role = (int) user.Role;
var claims = new List<Claim>
{
new("username", user.Username),
new("email", user.Email),
new("role", role.ToString())
};