新增 Http Basic 认证文档

This commit is contained in:
click33 2021-08-31 01:03:25 +08:00
parent cc4cc89e27
commit 3eb294668e
7 changed files with 108 additions and 13 deletions

View File

@ -8,7 +8,7 @@ import java.lang.annotation.Target;
import cn.dev33.satoken.basic.SaBasicTemplate;
/**
* Http Basic 认证只有通过 Basic 认证才能进入该方法
* Http Basic 认证只有通过 Basic 认证才能进入该方法
* <p> 可标注在函数类上效果等同于标注在此类的所有方法上
* @author kong
*

View File

@ -76,7 +76,7 @@ public class SaTokenConfig implements Serializable {
private long idTokenTimeout = 60 * 60 * 24;
/**
* Http Basic 认证的账号&密码
* Http Basic 认证的账号密码
*/
private String basic = "";
@ -380,14 +380,14 @@ public class SaTokenConfig implements Serializable {
}
/**
* @return Http Basic 认证的账号&密码
* @return Http Basic 认证的账号密码
*/
public String getBasic() {
return basic;
}
/**
* @param basic Http Basic 认证的账号&密码
* @param basic Http Basic 认证的账号密码
* @return 对象自身
*/
public SaTokenConfig setBasic(String basic) {

View File

@ -24,6 +24,7 @@
- [模拟他人 & 身份切换](/up/mock-person)
- [同端互斥登录](/up/mutex-login)
- [二级认证](/up/safe-auth)
- [Http Basic 认证](/up/basic-auth)
- [密码加密](/up/password-secure)
- [会话治理](/up/search-session)
- [全局侦听器](/up/global-listener)

View File

@ -0,0 +1,85 @@
# Http Basic 认证
Http Basic 是 http 协议中最基础的认证方式,其有两个特点:
- 简单、易集成。
- 功能支持度低。
在 Sa-Token 中使用 Http Basic 认证非常简单,只需调用几个简单的方法
---
### 1、启用 Http Basic 认证
首先我们在一个接口中,调用 Http Basic 校验:
``` java
@RequestMapping("test3")
public SaResult test3() {
SaBasicUtil.check("sa:123456");
return SaResult.ok();
}
```
然后我们访问这个接口时,浏览器会强制弹出一个表单:
![sa-basic.png](https://oss.dev33.cn/sa-token/doc/sa-basic.png 's-w-sh')
当我们输入账号密码后 `sa / 123456`,才可以继续访问数据:
![sa-basic-ok.png](https://oss.dev33.cn/sa-token/doc/sa-basic-ok.png 's-w-sh')
### 2、其它启用方式
``` java
// 对当前会话进行 Basic 校验,账号密码为 yml 配置的值例如sa-token.basic=sa:123456
SaBasicUtil.check();
// 对当前会话进行 Basic 校验,账号密码为:`sa / 123456`
SaBasicUtil.check("sa:123456");
// 以注解方式启用 Basic 校验
@SaCheckBasic(account = "sa:123456")
@RequestMapping("test3")
public SaResult test3() {
return SaResult.ok();
}
// 在全局拦截器 或 过滤器中启用 Basic 认证
@Bean
public SaServletFilter getSaServletFilter() {
return new SaServletFilter()
.addInclude("/**").addExclude("/favicon.ico")
.setAuth(r -> {
SaRouter.match("/test/**", () -> SaBasicUtil.check("sa:123456"));
});
}
```
### 3、URL 认证
除了访问后再输入账号密码外,我们还可以在 URL 中直接拼接账号密码通过 Basic 认证,例如:
``` url
http://sa:123456@127.0.0.1:8081/test/test3
```

View File

@ -17,7 +17,7 @@
在`Sa-Token`中进行二级认证非常简单只需要使用以下API
``` java
// 在当前会话 开启二级认证
// 在当前会话 开启二级认证时间为120秒
StpUtil.openSafe(120);
// 获取:当前会话是否处于二级认证时间内

View File

@ -9,6 +9,7 @@
- `@SaCheckRole("admin")`: 角色认证 —— 必须具有指定角色标识才能进入该方法
- `@SaCheckPermission("user:add")`: 权限认证 —— 必须具有指定权限才能进入该方法
- `@SaCheckSafe`: 二级认证校验 —— 必须二级认证之后才能进入该方法
- `@SaCheckBasic`: HttpBasic认证 —— 只有通过 Basic 认证后才能进入该方法
Sa-Token使用全局拦截器完成注解鉴权功能为了不为项目带来不必要的性能负担拦截器默认处于关闭状态<br>
因此为了使用注解鉴权你必须手动将Sa-Token的全局拦截器注册到你项目中
@ -65,6 +66,13 @@ public String add() {
public String add() {
return "用户增加";
}
// Http Basic 认证:只有通过 Basic 认证后才能进入该方法
@SaCheckBasic(account = "sa:123456")
@RequestMapping("add")
public String add() {
return "用户增加";
}
```
注:以上注解都可以加在类上,代表为这个类所有方法进行鉴权

View File

@ -81,18 +81,19 @@ PS两者的区别在于**`方式1会覆盖yml中的配置方式2会与y
| activityTimeout | long | -1 | token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒, 默认-1 代表不限制 (例如可以设置为1800代表30分钟内无操作就过期) [参考token有效期详解](/fun/token-timeout) |
| isConcurrent | Boolean | true | 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) |
| isShare | Boolean | true | 在多人登录同一账号时是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token) |
| isReadBody | Boolean | true | 是否尝试从请求体里读取token |
| isReadHead | Boolean | true | 是否尝试从header里读取token |
| isReadCookie | Boolean | true | 是否尝试从cookie里读取token |
| isReadBody | Boolean | true | 是否尝试从 请求体 里读取 Token |
| isReadHead | Boolean | true | 是否尝试从 header 里读取 Token |
| isReadCookie | Boolean | true | 是否尝试从 cookie 里读取 Token |
| tokenStyle | String | uuid | token风格, [参考自定义Token风格](/up/token-style) |
| dataRefreshPeriod | int | 30 | 默认dao层实现类中每次清理过期数据间隔的时间 (单位: 秒) 默认值30秒设置为-1代表不启动定时清理 |
| tokenSessionCheckLogin | Boolean | true | 获取token专属session时是否必须登录 (如果配置为true会在每次获取token专属session时校验是否登录) |
| autoRenew | Boolean | true | 是否打开自动续签 (如果此值为true, 框架会在每次直接或间接调用getLoginId()时进行一次过期检查与续签操作) |
| tokenPrefix | Boolean | true | token前缀, 格式样例(satoken: Bearer xxxx-xxxx-xxxx-xxxx) [参考自定义Token前缀](/up/token-prefix) |
| tokenSessionCheckLogin | Boolean | true | 获取 `Token-Session` 时是否必须登录 (如果配置为true会在每次获取 `Token-Session` 时校验是否登录) |
| autoRenew | Boolean | true | 是否打开自动续签 (如果此值为true, 框架会在每次直接或间接调用 `getLoginId()` 时进行一次过期检查与续签操作) |
| tokenPrefix | Boolean | true | token前缀, 格式样例(`satoken: Bearer xxxx-xxxx-xxxx-xxxx`) [参考自定义Token前缀](/up/token-prefix) |
| isPrint | Boolean | true | 是否在初始化配置时打印版本字符画 |
| isLog | Boolean | false | 是否打印操作日志 |
| jwtSecretKey | String | null | jwt秘钥 (只有集成 sa-token-temp-jwt 模块时此参数才会生效) |
| jwtSecretKey | String | null | jwt秘钥 (只有集成 `sa-token-temp-jwt` 模块时此参数才会生效) |
| idTokenTimeout | long | 86400 | Id-Token的有效期 (单位: 秒) |
| basic | String | "" | Http Basic 认证的账号和密码 [参考Http Basic 认证](/up/basic-auth) |
| sso | Object | new SaSsoConfig() | SSO 单点登录相关配置 |
@ -100,7 +101,7 @@ PS两者的区别在于**`方式1会覆盖yml中的配置方式2会与y
| 参数名称 | 类型 | 默认值 | 所属端 | 说明 |
| :-------- | :-------- | :-------- | :-------- | :-------- |
| ticketTimeout | long | 300 | Server端 | Ticket有效期 (单位: 秒) |
| allowUrl | String | * | Server端 | 所有允许的授权回调地址,多个用逗号隔开 (不在此列表中的URL将禁止下放ticket)[详情请参考 SSO模式二的域名校验章节] |
| allowUrl | String | * | Server端 | 所有允许的授权回调地址,多个用逗号隔开 (不在此列表中的URL将禁止下放ticket)参考:[SSO整合配置域名校验](/sso/sso-check-domain) |
| secretkey | String | null | Server端 & Client端 | 调用秘钥 (用于SSO模式三单点注销的接口通信身份校验) |
| authUrl | String | null | Client端 | SSO-Server端 单点登录地址 |
| isHttp | Boolean | false | Server端 & Client端 | 是否使用http请求校验ticket值 |