diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckBasic.java b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckBasic.java index 84e4a148..ffc2ac6b 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckBasic.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckBasic.java @@ -8,7 +8,7 @@ import java.lang.annotation.Target; import cn.dev33.satoken.basic.SaBasicTemplate; /** - * Http Basic 认证:只有通过 Basic 认证才能进入该方法 + * Http Basic 认证:只有通过 Basic 认证后才能进入该方法 *
可标注在函数、类上(效果等同于标注在此类的所有方法上)
* @author kong
*
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/config/SaTokenConfig.java b/sa-token-core/src/main/java/cn/dev33/satoken/config/SaTokenConfig.java
index ea50727b..d137e1f9 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/config/SaTokenConfig.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/config/SaTokenConfig.java
@@ -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) {
diff --git a/sa-token-doc/doc/_sidebar.md b/sa-token-doc/doc/_sidebar.md
index e7e200e8..940ceb5a 100644
--- a/sa-token-doc/doc/_sidebar.md
+++ b/sa-token-doc/doc/_sidebar.md
@@ -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)
diff --git a/sa-token-doc/doc/up/basic-auth.md b/sa-token-doc/doc/up/basic-auth.md
new file mode 100644
index 00000000..ad4fe34b
--- /dev/null
+++ b/sa-token-doc/doc/up/basic-auth.md
@@ -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 / 123456)`,才可以继续访问数据:
+
+
+
+
+### 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
+```
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sa-token-doc/doc/up/safe-auth.md b/sa-token-doc/doc/up/safe-auth.md
index a7c57985..b244a992 100644
--- a/sa-token-doc/doc/up/safe-auth.md
+++ b/sa-token-doc/doc/up/safe-auth.md
@@ -17,7 +17,7 @@
在`Sa-Token`中进行二级认证非常简单,只需要使用以下API:
``` java
-// 在当前会话 开启二级认证
+// 在当前会话 开启二级认证,时间为120秒
StpUtil.openSafe(120);
// 获取:当前会话是否处于二级认证时间内
diff --git a/sa-token-doc/doc/use/at-check.md b/sa-token-doc/doc/use/at-check.md
index 8444b4a6..4158ba89 100644
--- a/sa-token-doc/doc/use/at-check.md
+++ b/sa-token-doc/doc/use/at-check.md
@@ -9,6 +9,7 @@
- `@SaCheckRole("admin")`: 角色认证 —— 必须具有指定角色标识才能进入该方法
- `@SaCheckPermission("user:add")`: 权限认证 —— 必须具有指定权限才能进入该方法
- `@SaCheckSafe`: 二级认证校验 —— 必须二级认证之后才能进入该方法
+- `@SaCheckBasic`: HttpBasic认证 —— 只有通过 Basic 认证后才能进入该方法
Sa-Token使用全局拦截器完成注解鉴权功能,为了不为项目带来不必要的性能负担,拦截器默认处于关闭状态
因此,为了使用注解鉴权,你必须手动将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 "用户增加";
+}
```
注:以上注解都可以加在类上,代表为这个类所有方法进行鉴权
diff --git a/sa-token-doc/doc/use/config.md b/sa-token-doc/doc/use/config.md
index 9c261645..b5e95bd6 100644
--- a/sa-token-doc/doc/use/config.md
+++ b/sa-token-doc/doc/use/config.md
@@ -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值 |