以Windows身份验证做出反应

时间:2020-05-05 08:28:13

标签: reactjs asp.net-core

我有一个将通过Windows身份验证保护的基于Intranet的Web API,但是如何仅向具有特定角色的用户显示特定操作,又如何保护前端呢?

例如在MVC中,我可以在视图中完成以下操作:

if (User.IsInRole("SecureRoleA") == true)
 ...show button <button></button>
}

但是在反应:

  1. 我将无法访问User.IsInRole
  2. 我写的任何这样的代码都可以在javascript文件中查看,但这似乎不太安全(即使服务器也应该检查它们是否具有访问权限)。

这里推荐的方法是什么?我是否应该将用户所属的组发送给反应,然后将其存储在本地存储中,以便对此进行检查?还是我应该使用更好的方法?

2 个答案:

答案 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应用程序。 然后可以将其保存在本地存储中,并与所有请求一起发送。