ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] >[success] lcfms的用户权限分为两个部分,第一部分为是否拥有访问某一个控制器的权限,第二部为后台菜单是否显示的权限 ## 控制器权限 ### 1、为控制器添加权限注解,可以注解在类名上,也可以注解在方法名上 ``` package cn.lcfms.app.admin.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import cn.lcfms.app.BaseController; import cn.lcfms.bin.annotation.PermitPoll; @PermitPoll(type = "测试权限") @Controller("admin.TestController") @RequestMapping("/admin/test") public class TestController extends BaseController{ @RequestMapping("/initA") public String initA() { return "{code:1}"; } @PermitPoll(type = "测试权限") @RequestMapping("/initB") public String initB() { return "{code:2}"; } } ``` >[info]注解在类上与方法上有什么不同? >1、如果只注解在类上,那么意味着该类下所有方法都自动同步该类的权限。 >2、如果只注解在方法上,那么意味着只有该方法才设置有权限。 >3、既注解在类上,又注解在方法上,则以方法上的权限为准。 ### 2、后台为角色绑定权限 ![](https://box.kancloud.cn/8549798076c23ce826b12ddf386255c0_1136x470.png) >[info]在角色管理中,勾选上对应的控制器,那么该角色就绑定了该控制器的权限。 ### 3、后台为用户绑定角色 ![](https://box.kancloud.cn/e59f3e77a2c78a61e06a004bcfb27d96_1132x521.png) >[info]同一个用户支持多个角色,该用户拥有的权限为所有角色权限的叠加 ### 4、注解参数解释 ``` @PermitPoll(type = "测试权限",name="别名",url="abc.txt",msg="您没有权限访问") @RequestMapping("/initB") public String initB() { return "{code:2}"; } ``` >[info]1、type属性:配置权限时分组的组名 >2、name属性:配置权限时别名 >3、url属性:当用户没有登陆,没有权限时跳转的地址,使用的是相对于首页的相对路径 >4、msg属性:当用户已经登陆,没有权限时返回给用户的信息 >5、当用户使用ajax请求时,没有权限,将返回{"code":0,"msg":"msg注解值","url":"url注解值"} ![](https://box.kancloud.cn/d23cdea2b473541d5774488ef6862f48_1141x478.png) ### 5、使用@PermitPoll(type = "all")注解例外权限 >[info] 控制器的类使用了权限注解,则访问该类的所有方法都需要权限,但是如果该类的某一个方法不想要权限时,可以使用@PermitPoll(type = "all")来注解 ### 6、没有使用权限注解的控制器所有人都可以访问 ## 菜单权限 ### 1、统一为角色分配菜单 ![](https://box.kancloud.cn/786147edb92276d8e525e93b99e0b6bc_783x516.png) ### 2、为单个菜单绑定角色 ![](https://box.kancloud.cn/1d515a91e806003cdfb6e44b8c818ffb_829x485.png)