在客户端和REST API之间传递授权的最佳方式是什么?

时间:2018-01-05 22:52:48

标签: angularjs spring rest authorization roles

我开发一个应用程序将使用AngularJS作为前端,与后端的REST服务进行通信,实现为J2EE / Spring。后端服务通过基于角色的授权得到保护。

在应用程序的前端,我希望UI只允许用户执行授权的操作。代码应根据用户的权限显示/隐藏元素。

例如,您可以列出系统用户的功能。如果您拥有admin_users权限,则可以编辑任何用户的信息,包括他们的角色。如果不这样做,服务器将不允许更新操作。用户界面也应该通过禁用或隐藏编辑按钮来反映这一点。

将用户授权从后端传递到前端的最佳方法是什么?例如,我可以提供额外的服务,返回当前用户的权限。

2 个答案:

答案 0 :(得分:0)

我建议你看看(Json Web Token)JWT。它会提供一个随机复杂的密钥(JWT Secret)来强制强制令牌非常困难。

访问https://jwt.io了解详情。

答案 1 :(得分:0)

您可以在服务器上实现OPTIONS处理程序,该处理程序返回当前资源和当前登录用户的允许方法列表。例如,假设您有以下API:

  

抓取用户:GET /user/1

     

修改用户:PATCH /user/1

作为管理员

  

请求:OPTIONS /user/1

     

回复:Allow: GET, PATCH

作为用户

  

请求:OPTIONS /user/1

     

回复:Allow: GET

然后,您可以在客户端应用中推断选项响应的含义,并相应地显示/隐藏操作。

资源: