写在前面:后端就是后端,后端接口权限和前端可以想成没有任何关系,千万不要被所谓的路由、所谓的那些按钮、权限标识在哪个菜单下所迷惑(只要保证接口权限字符串在用户菜单权限下即可,除此之外,在哪个菜单或按钮都行)!(后端的我们就用接口测试工具测试,所以不要被前端界面的这些东西所迷惑)
图1
简单举例子说,后端有这么一个接口,图2,这个权限标识不一定非得放在图1所示的菜单下才起作用。比如admin用户拥有所有菜单的权限,那么你将test: one:testForm:list放到任何一个菜单下,用户admin都可以访问这个list接口,但是不能放到某个用户没有权限的菜单下。再换种说法就是,当一个用户登录的时候,会获得该用户能看到的菜单权限,只要你的接口权限标识在这个用户能看到的菜单下(任何一个地方),那么你带着这个用户的token用postman测试后端list接口,就可以访问,如图3所示,相反则不行。
图2
图3
补充知识点:
图4
图4有三个权限字符串,是或的关系,也就是说,你的用户token(该用户所拥有的菜单)里边有这三个权限字符串的任何一个都可以访问queryById接口。
前端权限讲解(后续看了看前端,最终的补充)
将后端传回的permissions存到本地缓存,将前端的权限字符串遍历对比本地缓存的permissions列表,若存在,则显示该前端按钮,若不存在,则不显示。说白了,不管是后端接口的权限还是前端按钮的权限都是在和数据库做对比,菜单只是起到了限制用户permissions数量。
Spring Security权限注解@PreAuthorize通俗讲解
于 2022-05-20 23:49:56 首次发布