# lucifer-security
**Repository Path**: LuciferZed4/lucifer-security
## Basic Information
- **Project Name**: lucifer-security
- **Description**: 权限拦截
- **Primary Language**: Java
- **License**: BSD-3-Clause
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-03-14
- **Last Updated**: 2024-09-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 配置:
#### 配置SecurityConfigModel信息(支持配置文件以及程序bean配置),如:
// 验证token对应header key(默认:Authentication)
securityModelConfig.setTokenHead("Authentication");
// 特殊验证token对应header key(默认:SignVerify)
securityModelConfig.setSignHead("SignVerify");
// token前缀(默认:Basic )
securityModelConfig.setTokenPrefix("Basic ");
// sign前缀(默认:Sign )
securityModelConfig.setSignPrefix("Sign ");
// token来源区分对应header key
securityModelConfig.setSource("source");
// 验证对象载体(必填)
securityModelConfig.setAuthMsg(XXX.class);
// 特殊验证对象载体(必填)
securityModelConfig.setSignMsg(XXX.class);
// 直接通行token(自动截取配置前缀,key遵循tokenHead,sign过滤不加入放行调用)(如:Basic XXX则填入XXX)
securityModelConfig.setPassToken("XXX");
// 直接通行角色id,默认System
securityModelConfig.setPassRoleId("XXX");
// 直接通行角色名称,默认System
securityModelConfig.setPassRoleName("XXX");
#### yml配置文件配置,如:
```yaml
lucifer:
security:
cloud:
enable: true # 网关模式启用标识(默认false,启用后模式改为gateway全局拦截过滤)
server: true # 网关过滤中心声明(默认false,为true则声明为拦截网关,不加载配置过滤图)
model:
authMsgClass: XXX.XXX.XXX # 验证对象载体(完整类名)
signMsgClass: XXX.XXX.XXX # 特殊验证对象载体(完整类名)
```
#### 过滤对象配置:
>@RoleId:验证对象载体内角色id声明(类型为字符串或数值)
@RoleName:验证对象载体内角色名称声明
@Role:验证对象载体内角色信息载体声明(类型为对象)
@RoleMap: 权限过滤图,在角色信息载体内,必须使用map形式,k-v对应方式为{"权限范围":["权限选项"]}
@UserId:验证对象载体内用户id声明(仅字符串)
@UserName:验证对象载体内用户名称声明
## 使用:
#### 调用类添加注解@Space开启类下方法过滤
##### @Space(value="{过滤资源范围}")
调用方法添加注解@Auth开启方法过滤,无注解方法视为方法不进行权限过滤
##### @Auth(value="调用需要具备的权限选项(默认"get"为查询权限,该权限不需要在权限过滤图内体现,视为具备该资源范围权限,则默认具备该资源范围查询权限)")
PS:@Space注解和@Auth需要组合使用,缺少任何一个皆视为无需进行权限验证
## 版本更新记录(仅记录上传版本)
### 1.2.0版本
#### 引入对象数据自动填充功能
#### 使用步骤:
1、配置bean:DataCompletionConfig
2、定义自定义注入标识注解
3、配置DataConfigModel,set到DataCompletionConfig中
4、方法类标注注解@DataCompletion声明该方法需要开启填充
5、参数实体类中在需要自动填充的变量上标注配置的自定义注解以进行自动填充
### 2.0.1版本
#### 加入网关拦截过滤模式(springcloud),结合gateway全局过滤拦截,使用redis作为注册中心
###### 部分已存在并设法处理中的问题:
###### 1、采用fail-fast原则,存在业务锁时终止服务启动;
###### 2、原接口变更路径后,清除动作会丢失,保留原有地址配置形成脏数据
### 2.0.10版本
#### 切换支持Java21-springboot3.2.4版本
1、加入自定redis注册中心库配置
2、从原有redisTemplate切换至redisson使用
#### 2.0.11版本
#### 更新lucifer.common1.2.0
lucifer.common加入映射数据库生成实体工具
>调用方法:Data2ModelUtil.initJavaFile(abandonPrefix,srcPath,packagePath);
>>abandonPrefix:构建实体名称时舍弃前缀
srcPath:工程根路径
packagePath:包路径
#### 2.1.0版本
#### 提取gateway网关过滤中心(lucifer-security-gateway)
#### git地址:https://gitee.com/LuciferZed4/lucifer-security-gateway
#### 2.2.0版本
#### 更新网关模式下过滤图装载方式
原:整体map
现:redis
#### 2.2.1版本
#### 更新用户登录有效时间配置,sign暂且忽略有效时间刷新步骤,后续补充有效时间刷新配置化
```yaml
lucifer:
security:
model:
loginValidUser: 1 # 登录有效时间(user)(单位/天;默认1)
loginValidSign: 1 # 登录有效时间(sign)(单位/天;默认1)
```