Web前端页面访问权限控制总结

使用背景:不同角色访问页面权限控制

说到权限实现方案,个人觉得先看前后端实现架构。

举个例子,项目架构如下:

浏览器 -> web服务器 -> 网关 -> 后台服务

方案1,前端控制页面访问权限,后端不做接口权限控制。 -  绕过前台可直接访问接口,前端权限控制存在的安全隐患。 

方案2,前端不做页面控制,有后端进行权限控制。- 后端进行权限控制,基本上能避免绕过前台接口调用接口的问题,但是能看到不能访问一些菜单,给用户的体验不太好。

方案3,前后台都做页面权限访问控制。- 前后都做权限控制,这个相对比较完美的方案。

最终采用哪一种需要根据项目实际情况而定,这里根据方案3做一下自己项目过程中的分析总结,请大家共勉。

从策略上来说根据是否需要在网关做统一的接口权限控制分情况:

一、网关统一做url鉴权

优点:网关处进行URL鉴权,代码简洁清晰,不需要在每个业务接口总进行权限适配,代码相对比较简单。

缺点:配置比较繁琐,根据角色找到接口url进行配置。假设每个角色分配对应数据接口的权限模型列表如下:

角色页面接口
A页面A接口1
B页面B

接口1

接口2

C页面C接口3

网关实现核心思路:

登录是获取用户权限模板URL列表,定义filter过滤器,获取当前请求url,在权限列表中判断访问接口URL路径是否在用户权限列表中,如果在则URL鉴权通过,否则鉴权失败返回鉴权失败信息。

二、不在网关做统一的URL鉴权,而是在接口中做URL鉴权。

前后台权限点定义模型:

项目列表

页签数据操作
名称字符串名称字符串名称字符串
在途项目service-som:project:underway全国service-som:project:view_all(前端)
service-som:project-info:view(后端)
推进项目service-som:project:promote(前端)
service-som:project-info:cornerstone_manage(后端)
区域service-som:project:view_region(前端)
service-som:project-info:view(后端)
项目暂停service-som:project:pause(前端)
service-som:project-info:suspend(后端)

根据角色进行勾选不同的权限点:

 前后端在获取用户权限列表之后:通过判断用户权限是否包括某个权限点,有该权限点则鉴权通过,否则鉴权失败。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值