素材牛VIP会员
前后端分离项目,你们是怎么控制权限的?
 隔***王  分类:Html5  人气:2410  回帖:11  发布于6年前 收藏

已经做前后端分离 快一年了
技术栈趋向成熟

  • vue
  • vue router
  • vuex
  • node
  • express

做出来的是单页面应用,但是在权限上一直都有问题。
现在我做权限 是 后台有一套,前端又有重复的一套,麻烦就在这里,

  • 只有我对后台有请求的时候,我才知道用户到底有没有这个权限「因为前台的权限,就存在 localSorage 里面,用户可以更改」,如果请求发现没权限,还是前端 router 跳到没权限或者登录页,但是如果这个页面没有请求呢。
  • 因为是一个管理系统,权限特别细,比如某些用户只有这几个目录可以看,其他用户只有那几个目录可以看,但我用的是前端路由,问题又来了。

    • 前端路由一般都是配置好的,我怎么让用户一进来就跳到他自己有权限的页面的第一页。
    • 如果用户直接输入 一个没有权限进入的地址 我该怎么拦截「须知我的拦截其实没有意义,因为页面都在他那里,他只需要改掉我的拦截代码就行」

这里 我现在的解决方案是

  • 还是后台传给我 详细的权限,用于我铺设页面,如果这个没有权限,导航上也是没有显示的,但是这样还是可以被更改。
  • 第二个 用户登录 就会跳他能看到页面的第一个。

    • 首先 路由上 是全部都注册好的
    • 请求之后拿到权限,然后根据权限 生成导航数组
    • 然后自动页面跳到导航数组的 第一个
    • 切换页面的时候,都要去根据导航数组判断他是否有这个页面权限。

但是我觉得自己的办法太笨拙,而且还是会被篡改,所以求各位解答疑惑,谢谢了。

讨论这个帖子(11)垃圾回帖将一律封号处理……

Lv5 码农
ch***am PHP开发工程师 6年前#1

前端不建议拥有权限控制,因为是不可靠的。。

Lv6 码匠
yj***23 站长 6年前#2

权限系统一定是单独的一个系统,不耦合在业务系统里。
对于sidebar,tabbar等较大的权限范围由前端和权限系统交互得出是否展示给用户。
对于最小粒度的每一个action由后端和权限系统交互决定是否能执行此业务逻辑。
前端路由肯定不是写死的,而是从权限系统问来的。

Lv2 入门
he***ba JS工程师 6年前#3

控制全部交给后台处理。
第一次登录的时候,使用用户信息生成token返回给客户端。
token的安全性由后台处理,前端拿到的数据都认为是正确的,不对权限做控制。
前端每次请求后台接口,都将token带入。由后台验证token的正确性,并且返回相应的结果。
用标准的restful api就可以了。

Lv6 码匠
qx***23 Linux系统工程师 6年前#4

同意@小翼做法是对的,你说的手动修改了有什么关系,就算用户能通过一些方式进入到本来进入不了的页面,当在那个页面想要获取到一些数据或者一些操作还是要通过这个token值,而这个token值用户是破解不了的,他只是单纯的进入了一个空页面而已页面

Lv6 码匠
su***an JAVA开发工程师 6年前#5

vue路由有meta字段,可以用来存储可访问此路由的角色,但是这样的话,你的菜单需要根据路由动态生成而不是写死在页面上。

Lv6 码匠
飞***n 技术总监 6年前#6

完整的前端权限控制可以参考这个项目:https://github.com/tower1229/...

Lv6 码匠
小***技 Web前端工程师 6年前#7

权限由后端控制才是安全的 前端只能做一些辅助判断
看你的问题的我建议你们后台权限分两套:页面权限和数据权限
进入一个页面或路由 首先请求判断是否有页面的权限,有了页面的权限再请求数据,后台会更具token来判断返回相应的结果 没有权限统一根据401中的错误码来做对应的展示
这样做就可以很好的应对 当用户手动修改本地数据或url访问到他不应该访问的页面了

Lv4 码徒
风***2 站长 6年前#8

首先 权限功能是由后台实现的,我们的目标是如何在复杂权限系统的前端体现出权限的概念

我的做法是前端路由全部存数据库,每个前端路由下绑定该路由需要访问的api,通过前端的管理界面实现 前端和后端权限的绑定。用户登录时获取有权限的前端路由动态注册

由此实现了界面上大到路由,小到一个按钮的任何权限管控(按钮也存后端),既无权限也不显示ui,比如某一个路由没权限,后端也不会返回该路由,导致前端没有这条路由

然后又通过路由表关联的api实现了每打开一个前端页面可以自动请求该页面下的api 自己同步后端的接口验证到前端,后端修改接口验证,前端自动更改等等一系列功能,手机打字太累不再赘述,感兴趣沟通我

Lv5 码农
陌***4 站长 6年前#9

首先,肯定只能是后端权限起作用
其次,对每个涉权操作,都要进行鉴权后才响应,这一步不能省,否则会乱套的。

前端权限相关字段仅仅是为了优化UI,并不具有实际的权限管理作用,只有这样才能保证权限系统是稳定的。

Lv4 码徒
阵***香 交互设计师 6年前#10

权限由后端控制,前端只需要根据后端的返回结果判断是否有权限,或者是否有数据来进行友好的呈现

可以参考下这个回答

上一页12下一页
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取