9

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

  • vue
  • vue router
  • vuex
  • node
  • express

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

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

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

这里 我现在的解决方案是

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

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

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

2017-12-22 提问

查看全部 16 个回答

40

已采纳

我觉得楼主的问题应该是不存在的。
后端做了权限控制,无权看到的内容就不会返回了,即使你请求了这个接口。

前端也控制了权限,无权访问的页面,导航中就不会显示了,如果用户自己在前端修改了前端的数据,或者跳过你给的导航,直接通过url访问对应的页面,也应该不会有什么大问题,因为即使他能在前端访问到那个页面,但每个页面都有对应的内容(数据),显示内容的时候是需要请求后端的,后端没有权限,打开页面也只能是空白。

你只要后端做好了权限控制,前端无论怎么改也应该是不能获取到自己没有权限的内容的。

从数据安全的角度来说,前端可以完全不使用权限控制;如果你那里做不到这点的话,那么,你后端的权限控制肯定是有问题的。

前端的权限控制只是为了给用户更好的体检;并不是真的拿来控制权限的。

1

前端不可能实现权限控制,最多只是隐藏信息,掩耳盗铃。从理论上来说,任何只要已经送达客户端的信息,都有被破解的可能。只有不发送,才不会被破解,这就是后端权限控制的意义。后端控制不发送信息,前端就没有破解的可能。

张京 · 2018年01月04日

4

前端的权限控制只是为了给用户更好的体检;并不是真的拿来控制权限的。
很经典

puz_zle · 2017年12月26日

展开评论

推广链接