Shiro权限控制

Shiro实现权限控制步骤

1.加入3个依赖
shiro-core(shiro内核依赖)
shiro-spring(shiro与spring整合依赖)
spring-boot-starter-aop(spring aop依赖)
2.创建shiro对应的配置文件
1.ShiroConfig(文件名称可以自定义,配置类),自动加载,并执行shiroFilter方法,排除不需要权限的URL
同时启动注解功能(即运行authorizationAttributeSourceAdvisor方法)
该类启动时执行一次,后面不再执行该类
2.UserRealm(文件名称可以自定义,实现用户登录与权限控制)
3.在需要进行权限控制的方法前面加上对应的注解
@RequiresPermissions(“权限字符串”)
当访问路径对应的方法前面有@RequiresPermissions注解时,系统自动调用UserRealm类的AuthorizationInfo方法进行权限验证,
如果有权限那么程序正常执行,如果没有权限,系统会自动抛出异常,UserExceptionHandler类会自动处理异常
4.创建全局异常处理类
UserExceptionHandler:当用户点击没有权限的菜单(按钮)时,进行统一的异常处理,并返回错误信息
5.对应5个表
User表:用户表
Role表:角色表
user_role表:用户角色表
permission表:系统权限表
role_permission表:角色权限表

设置不需要进行权限控制的路径(允许匿名访问)

anon:允许匿名访问
authc:需要进行身份认证的路径
map.put("/login2/", "anon"); // 登录成功后的访问路径
map.put("/login2/login", "anon"); // 登录操作
map.put("/js/**", "anon"); // js文件路径
map.put("/css/**", "anon"); // css文件路径
map.put("/images/**", "anon"); // 图标文件路径
map.put("/upload/**", "anon"); // 上传后的图片访问路径(MyMvcConfig类中配置的路径)
map.put("/**", "authc"); // 进行身份认证后才能访问