# LoopAuth
**Repository Path**: hermit2020/loop-auth
## Basic Information
- **Project Name**: LoopAuth
- **Description**: 一款JavaWeb鉴权框架,同时支持RBAC (角色鉴权校验)、ABAC (规则流引擎鉴权),并提供会话管理等功能。
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: https://loopauth.sobercoding.com/
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 20
- **Created**: 2023-03-02
- **Last Updated**: 2023-03-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# LoopAuth
一款JavaWeb鉴权框架,同时支持RBAC (角色鉴权校验)、ABAC (规则流引擎鉴权),
并提供会话管理等功能。
目前包含如下功能:
- 注解鉴权
- 代码鉴权
- 登录功能
- 有/无状态登录
- Redis登录业务存储分离
- ABAC权限
## 写在前面
项目发布初期,希望大家多多点点`Star`
- [Gitee](https://gitee.com/lucky-color/loop-auth)
- [GitHub](https://github.com/ChangZou/LoopAuth)
- [官方文档](https://loopauth.sobercoding.com)
## 交流群
- QQ群:460304421
- 微信群:请扫下图二维码,备注`LoopAuth加群`
## 抛弃繁琐的权限框架配置,甚至无需配置`yml`即可简单启动
```java
// 你可以这样
@GetMapping("/islogin")
public String isLogin(){
// 验证是否登录
LoopAuthSession.isLogin();
return "已经登录";
}
// 也可以这样
// 登录才可访问
@LoopAutoCheckLogin
@GetMapping("/islogin")
public String isLogin(){
return "已经登录";
}
```
## SpringBoot快速使用
### 添加依赖
```xml
com.sobercoding
LoopAuth-spring-boot-starter
${version}
```
### 配置文件
> 快速体验可以无需配置`yml`文件,完成其他配置直接启动即可
- 登录规则及持久层的配置需要开启`token-persistence`配置项
- `access-modes`为从请求获取`token`的位置,同时登录成功或登录续期操作也会主动返回`token`到`HEADER`或`COOKIE`中
```yml
loop-auth:
session:
time-out: 5 # token有效时间(单位秒) 默认24小时
token-name: token # token名称 默认LoopAuth
mutualism: true # token共生 默认false 开启则 账号可以同时在线
exclusion: true # 互斥登录, 默认false 开启则 多人操作相同设备登录 会互相挤掉线(只有在 mutualism=true 时此配置才有效)
token-persistence: true # token持久化配置 默认false
max-login-count: 3 # 同一账号最大登录数量 默认1 -1代表不限制
renew: false # 自动续签 默认true 每次isLogin操作,会自动刷新token有效期
access-modes: # token获取方式 默认[COOKIE,HEADER]顺序获取。即COOKIE中获取到鉴权成功,则不前往HEADER获取
- HEADER
- COOKIE
secret-key: secret # 默认LoopAuth Token生成密钥
token-persistence-prefix: tokenPrefix # 默认LoopAuthToken token持久层存储的前缀
login-id-persistence-prefix: loginIdPrefix # 默认LoopAuthLoginId LoginId持久层存储的前缀
cookie: # cookie配置
remember: true # 是否长久有效 默认false 开启则cookie的有效时间为time-out,关闭则网页关闭后cookie丢失
domain: localhost # 域 默认服务端域
path: /test # 默认false '/' 路径
http-only: true # 默认false 是否允许js操作
secure: true # 默认false 是否只在https安全协议传输
# 安全等级 Strict (完全禁止第三方Cookie,跨站点时,任何情况下都不会发送Cookie) 默认不限制
# Lax 不发送第三方 Cookie,但是导航到目标网址的 Get 请求除外
# None 不限制
same-site: Strict
```
### 简单使用
- 新建`Controller`类
```java
@RestController
public class DemoController {
@GetMapping("/login")
public String register(){
// 登录方法
LoopAuthSession.login("1");
return "登录成功";
}
@GetMapping("/islogin")
public String isLogin(){
// 验证是否登录
LoopAuthSession.isLogin();
return "已经登录";
}
@GetMapping("/out")
public String loginOut(){
// 注销登录
LoopAuthSession.logout();
return "注销成功";
}
}
```