我正在创建一个基本的商业网络应用,应该有两个级别的授权。不过,我并不想保护API端点。我希望不同级别的用户在同一个网址上看到不同的网页。因此,例如,管理员在主页上看到两个按钮,而销售代表只看到一个按钮,因为他们不应该被允许访问第二个按钮后面的内容。
我想做的是创建一个" admin"我的MySQL用户表中的boolean。一旦用户登录,该字段的值应以某种方式持续存在。因此,如果我是管理员并且我登录,那么类似会话的内容将包含我作为管理员的信息,允许我在我的AngularJS组件中检查该信息,从而加载正确的templateUrl。
我的组件顶部会有类似的内容:
var tempUrl
if (user.admin) tempUrl = 'home-page/reports.template.html'
else tempUrl = 'home-page/reports-short.template.html'
angular.
module('reports').
component('reports', {
templateUrl: tempUrl, ...
我已经使用JWT作为我自己的身份验证方案的一部分来保护我的API端点,我想继续为每个登录的用户分配一个,以便保护我的所有API端点。
我不在乎是否违反任何REST原则,我只需要一种方法让客户端保留我以后可以在我的AngularJS组件中检查的信息。
答案 0 :(得分:0)
在后端,您可以拥有一个表,将每个userId映射到一个Role。如果您确定只有两个角色,甚至可以使用一个bolean列,比如说isAdmin
所以你的用户表看起来像
UserId | isAdmin| other properties
1 true Xyz
此外,在每次API调用时,您都应该像进行身份验证一样进行授权。
根据授权,响应会有所不同,这有助于以不同方式呈现组件。
我也会严格意识到要在整个后端拥有整个授权部分,而不是在前端部署