我有一个将通过Windows身份验证保护的基于Intranet的Web API,但是如何仅向具有特定角色的用户显示特定操作,又如何保护前端呢?
例如在MVC中,我可以在视图中完成以下操作:
if (User.IsInRole("SecureRoleA") == true)
...show button <button></button>
}
但是在反应:
User.IsInRole
和这里推荐的方法是什么?我是否应该将用户所属的组发送给反应,然后将其存储在本地存储中,以便对此进行检查?还是我应该使用更好的方法?
答案 0 :(得分:0)
您应该使用令牌并添加额外的数据以返回json:
var token = new JwtSecurityToken
(
issuer: _configuration["Issuer"],
audience: _configuration["Audience"],
claims: claims,
expires: DateTime.UtcNow.AddDays(60),
notBefore: DateTime.UtcNow,
signingCredentials: new SigningCredentials(new SymmetricSecurityKey
(Encoding.UTF8.GetBytes(_configuration["SigningKey"])),
SecurityAlgorithms.HmacSha256)
);
return Ok(new
{
token,
fullName = user.FullName,
roles = role,
});
并在反应代码中检查角色访问权限
答案 1 :(得分:0)
您在前端编写的任何授权代码仅出于用户体验,而非安全性。 正如您所说,它将在用户设备上可见,但也可以可编辑。 但隐藏用户无法访问的功能的按钮绝对有用。
一种常见的方法是在登录时创建本地JSON Web令牌,并将其发送到UI应用程序。 然后可以将其保存在本地存储中,并与所有请求一起发送。