首先自定义一个注解:
package com.xxxx.qcby.anno;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @Classname PreAuth
* @Description 这是权限字符串注解
* @Date 2021/8/19 16:42
* @Created by thx
*/
@Target({ElementType.TYPE, ElementType.METHOD}) //该注解可以作用于那些类型元素上:类,方法,字段
@Retention(RetentionPolicy.RUNTIME) //运行时才会启动
public @interface PreAuth {
/**
* 权限字符串
*/
String value() default "";
}
此注解放在 Controller 层的方法上,用来控制数据库中有的权限:
比如:
在登陆后,调用该用户能访问的注解,放入 List 中
在登陆拦截器中,判断当前访问的方法,是否存在注解 List 中,如果存在,则不拦截,否会拦截。
数据库文件:
使用 rbac 关系,用户,角色,菜单,角色用户,角色菜单
项目源码地址:https://gitee.com/tang-haoxiang/rbac_practice_0819,