From 2b8489dff70014d8c2803cdf0662ec827a740e0a Mon Sep 17 00:00:00 2001 From: click33 <2393584716@qq.com> Date: Sat, 8 Mar 2025 11:52:17 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=96=87=E6=A1=A3=E6=96=B0=E5=A2=9E=20?= =?UTF-8?q?=E2=80=9C=E7=99=BB=E5=BD=95=E5=8F=82=E6=95=B0=E2=80=9D=20?= =?UTF-8?q?=E7=AB=A0=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dev33/satoken/stp/SaLoginParameter.java | 4 +-- .../main/java/com/pj/SaTokenApplication.java | 1 + sa-token-doc/_sidebar.md | 3 +- sa-token-doc/fun/firewall.md | 10 +++--- sa-token-doc/up/login-parameter.md | 35 +++++++++++++++++++ 5 files changed, 45 insertions(+), 8 deletions(-) create mode 100644 sa-token-doc/up/login-parameter.md diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaLoginParameter.java b/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaLoginParameter.java index bde741f3..e7e571fa 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaLoginParameter.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/stp/SaLoginParameter.java @@ -69,7 +69,7 @@ public class SaLoginParameter { /** * 指定此次登录 token 有效期,单位:秒 (如未指定,自动取全局配置的 timeout 值) */ - private Long timeout; + private long timeout; /** * 指定此次登录 token 最低活跃频率,单位:秒(如未指定,则使用全局配置的 activeTimeout 值) @@ -293,7 +293,7 @@ public class SaLoginParameter { /** * @return 指定此次登录 token 有效期,单位:秒 */ - public Long getTimeout() { + public long getTimeout() { return timeout; } diff --git a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/SaTokenApplication.java b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/SaTokenApplication.java index 90c20522..b3e9e28f 100644 --- a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/SaTokenApplication.java +++ b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/SaTokenApplication.java @@ -16,6 +16,7 @@ public class SaTokenApplication { public static void main(String[] args) { SpringApplication.run(SaTokenApplication.class, args); System.out.println("\n启动成功:Sa-Token配置如下:" + SaManager.getConfig()); + ); } } diff --git a/sa-token-doc/_sidebar.md b/sa-token-doc/_sidebar.md index 756aad8c..59100a81 100644 --- a/sa-token-doc/_sidebar.md +++ b/sa-token-doc/_sidebar.md @@ -22,10 +22,11 @@ - [前后端分离](/up/not-cookie) - [自定义 Token 风格](/up/token-style) - [自定义 Token 前缀](/up/token-prefix) + - [同端互斥登录](/up/mutex-login) - [记住我模式](/up/remember-me) + - [登录参数](/up/login-parameter) - [二级认证](/up/safe-auth) - [模拟他人 & 身份切换](/up/mock-person) - - [同端互斥登录](/up/mutex-login) - [账号封禁](/up/disable) - [密码加密](/up/password-secure) - [会话查询](/up/search-session) diff --git a/sa-token-doc/fun/firewall.md b/sa-token-doc/fun/firewall.md index 14e5d59e..3f503bf7 100644 --- a/sa-token-doc/fun/firewall.md +++ b/sa-token-doc/fun/firewall.md @@ -13,15 +13,15 @@ Sa-Token 内置防火墙组件 `SaFirewallStrategy`,用于拦截一些可能 - `SaFirewallCheckHookForWhitePath`:请求 path 白名单放行。 - `SaFirewallCheckHookForBlackPath`:请求 path 黑名单校验。 - `SaFirewallCheckHookForPathDangerCharacter`:请求 path 危险字符校。 -- `SaFirewallCheckHookForPathBannedCharacter`:请求 path 禁止字符校验 -- `SaFirewallCheckHookForDirectoryTraversal`:请求 path 目录遍历符检测 +- `SaFirewallCheckHookForPathBannedCharacter`:请求 path 禁止字符校验。 +- `SaFirewallCheckHookForDirectoryTraversal`:请求 path 目录遍历符检测。 - `SaFirewallCheckHookForHost`:Host 检测。 - `SaFirewallCheckHookForHttpMethod`:请求 Method 检测。 - `SaFirewallCheckHookForHeader`:请求头检测。 - `SaFirewallCheckHookForParameter`:请求参数检测。 -### 默认 hook 配置: +### 1、默认 hook 配置: 假设我们想要增加请求 path 黑名单,可以使用如下代码: @@ -45,7 +45,7 @@ public class SaTokenConfigure { 除了 `SaFirewallCheckHookForBlackPath` 以外,其它所有 hook 均可通过此方式重载配置,在此暂不冗余演示。 -### 注册新的 hook 规则: +### 2、注册新的 hook 规则: 你可以使用如下代码注册新的 hook 规则: ``` java @@ -68,7 +68,7 @@ SaFirewallStrategy.instance.removeHook(SaFirewallCheckHookForHost.class); ``` -### 指定异常处理: +### 3、指定异常处理: 被防火墙拦截的请求不会做出格式化响应,因为通常这些请求为非正常业务请求,只需阻断即可,无需前端依照响应做出页面提示。 diff --git a/sa-token-doc/up/login-parameter.md b/sa-token-doc/up/login-parameter.md new file mode 100644 index 00000000..71ba95ad --- /dev/null +++ b/sa-token-doc/up/login-parameter.md @@ -0,0 +1,35 @@ +# 登录参数 + +在之前的章节我们提到,通过 `StpUtil.login(xxx)` 可以完成指定账号登录,同时你可以指定第二个参数来扩展登录信息,比如: + +``` java +// 指定`账号id`和`设备类型`进行登录 +StpUtil.login(10001, "PC"); + +// 设置登录账号 id 为 10001,并指定是否为 “记住我” 模式 +StpUtil.login(10001, false); +``` + +除了以上内容,第二个参数你还可以指定一个 `SaLoginParameter`,来详细控制登录的多个细节,例如: + +``` java +StpUtil.login(10001, new SaLoginParameter() + .setDeviceType("PC") // 此次登录的客户端设备类型, 一般用于完成 [同端互斥登录] 功能 + .setDeviceId("xxxxxxxxx") // 此次登录的客户端设备ID, 登录成功后该设备将标记为可信任设备 + .setIsLastingCookie(true) // 是否为持久Cookie(临时Cookie在浏览器关闭时会自动删除,持久Cookie在重新打开后依然存在) + .setTimeout(60 * 60 * 24 * 7) // 指定此次登录 token 的有效期, 单位:秒,-1=永久有效 + .setActiveTimeout(60 * 60 * 24 * 7) // 指定此次登录 token 的最低活跃频率, 单位:秒,-1=不进行活跃检查 + .setIsConcurrent(true) // 是否允许同一账号多地同时登录 (为 true 时允许一起登录, 为 false 时新登录挤掉旧登录) + .setIsShare(true) // 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个token, 为 false 时每次登录新建一个 token) + .setMaxLoginCount(12) // 同一账号最大登录数量,-1代表不限 (只有在 isConcurrent=true, isShare=false 时此配置项才有意义) + .setMaxTryTimes(12) // 在每次创建 token 时的最高循环次数,用于保证 token 唯一性(-1=不循环尝试,直接使用) + .setExtra("key", "value") // 记录在 Token 上的扩展参数(只在 jwt 模式下生效) + .setToken("xxxx-xxxx-xxxx-xxxx") // 预定此次登录的生成的Token + .setIsWriteHeader(false) // 是否在登录后将 Token 写入到响应头 + .setTerminalExtra("key", "value")// 本次登录挂载到 SaTerminalInfo 的自定义扩展数据 +); +``` + +以上大部分参数在未指定时将使用全局配置作为默认值。 + +