0%

前后端完全分离时的权限管理

本文介绍两种前后端完全分离时的权限管理的实现方式。

前言

由于前后端完全分离,项目也是两个项目,就不能像在一个项目里面的时候,在生成html页面的时候,就知道哪些菜单或是按钮是当前用户可以看到的。这时就需要通过一些特殊方法来实现针对不同权限的用户显示不同的菜单或是按钮。

实现方式

这里介绍两种实现方式,一种是偏前端控制的,另一种是偏后端控制的。

前端控制

  1. 当用户登录成功的时候,同时返回用户拥有的角色和权限给前端,前端把这些数据当作全局数据保存。
  2. 定制指令,名称可以叫has_rolehas_permission
  3. 再在需要进行权限控制的菜单或是按钮显示的时候加上指令进行控制。如以下方式:
    1
    <div has_role="admin">产品管理</div>
  4. 参考文章 angular-shiro

后端控制

  1. 当用户登录成功的时候,查询出用户可以看到的菜单资源,为一个树状结构,返回到前端。
  2. 前端再按得到的数据显示出菜单来。

总结

  1. 无论哪种实现方式,后台都需要再对每个请求所需要的权限进行控制。
  2. 前端控制的可以粒度更细一些,可以控制到显示任何元素,后端控制的一般就控制下菜单的显示,到按钮等其他元素的显示就无能为力了。