【发布时间】:2017-11-29 19:14:30
【问题描述】:
我正在创建一个基本的商业网络应用程序,它应该有两个授权级别。不过,我不只是想保护 API 端点。我希望不同级别的用户在同一个 url 上看到不同的页面。例如,管理员在主页上看到两个按钮,而销售代表只看到一个按钮,因为他们不应该被允许访问第二个按钮后面的内容。
我想做的是在我的 MySQL 用户表中创建一个“管理员”布尔值。一旦用户登录,该字段的值应该以某种方式与用户保持一致。因此,如果我是管理员并且我登录了,类似会话之类的东西会携带我是管理员的信息,允许我在 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 组件中检查的信息。
【问题讨论】:
-
您是否使用模板库来呈现您的页面?您可以在提供 HTML 时设置一个 JavaScript 变量。 安全说明 无论您如何解决问题,您都希望由后端处理安全性。前端应该只隐藏一些东西来帮助用户体验。
-
如果你是这个意思,我没有使用像玉/哈巴狗这样的东西。一切都使用 Angular 组件呈现,这些组件具有 templateUrl。模板只是与组件存储在同一文件夹中的 html 文件
标签: mysql angularjs node.js express authorization