mysql - 如何改变 Node js 中的授权(权限)级别

标签 mysql angularjs node.js express authorization

我正在创建一个基本的商业网络应用程序,它应该有两个级别的授权。不过,我不仅仅想保护 API 端点。我希望不同级别的用户在同一网址上看到不同的页面。例如,管理员在主页上看到两个按钮,而销售代表只能看到一个按钮,因为他们不应该被允许访问第二个按钮后面的内容。

我想做的是在我的 MySQL 用户表中创建一个“admin” bool 值。用户登录后,该字段的值应以某种方式保留下来。因此,如果我是管理员并登录,类似 session 之类的内容将携带我是管理员的信息,允许我在 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 端点,并且我想继续为每个登录的用户分配一个 JWT,以保护我的所有 API 端点。

我不在乎我是否违反了 REST 的任何原则,我只需要一种方法让客户端保留我稍后可以在我的 AngularJS 组件中检查的信息。

最佳答案

在后端,您可以有一个表将每个用户 ID 映射到一个 Angular 色。如果您确定只有两个 Angular 色,甚至可以使用 bool 列,例如 isAdmin

所以你的用户表看起来像

UserId | isAdmin| other properties
1             true        Xyz

此外,在每次 API 调用时,您都应该像进行身份验证一样进行授权。

根据授权,响应会有所不同,这将有助于以不同的方式呈现组件。

我也会严格要求将整个授权部分放在后端,而不是在前端进行

关于mysql - 如何改变 Node js 中的授权(权限)级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44768326/

相关文章:

php - 如何从具有不同外键名称的两个表中获取数据

mysql - 如何存储关键字/标签

php - 尽管尝试了所有方法,mysql表仍然显示小黑色问号

javascript - 将 HTML 放入 ng-view 时 Controller 不是一个函数

javascript - 如何用json解决无效值的问题

javascript - NodeJs中的和成对整除?

mysql - 给定NOW(),如何在MySQL中获取一周第一天的DATETIME对象?

javascript - 如何创建 Angular 1.x "plugin"?

javascript - AngularJs 预渲染

javascript - Node.js http.get 作为函数