优化文档

This commit is contained in:
shengzhang 2021-03-11 01:06:27 +08:00
parent 9f6717f8c0
commit 9fe0e1f97b
13 changed files with 89 additions and 26 deletions

View File

@ -18,16 +18,16 @@ public class SaLoginModel {
*/
public String device;
/**
* 指定此次登录token的有效期, 单位: 如未指定自动取全局配置的timeout值
*/
public Long timeout;
/**
* 是否为持久Cookie临时Cookie在浏览器关闭时会自动删除持久Cookie在重新打开后依然存在
*/
public Boolean isLastingCookie;
/**
* 指定此次登录token的有效期, 单位: 如未指定自动取全局配置的timeout值
*/
public Long timeout;
/**
* @return device
@ -45,22 +45,6 @@ public class SaLoginModel {
return this;
}
/**
* @return timeout
*/
public Long getTimeout() {
return timeout;
}
/**
* @param timeout 要设置的 timeout
* @return 对象自身
*/
public SaLoginModel setTimeout(long timeout) {
this.timeout = timeout;
return this;
}
/**
* @return isLastingCookie
*/
@ -77,6 +61,22 @@ public class SaLoginModel {
return this;
}
/**
* @return timeout
*/
public Long getTimeout() {
return timeout;
}
/**
* @param timeout 要设置的 timeout
* @return 对象自身
*/
public SaLoginModel setTimeout(long timeout) {
this.timeout = timeout;
return this;
}
/**
* @return cookie时长
@ -109,12 +109,12 @@ public class SaLoginModel {
if(device == null) {
device = SaTokenConsts.DEFAULT_LOGIN_DEVICE;
}
if(timeout == null) {
timeout = config.getTimeout();
}
if(isLastingCookie == null) {
isLastingCookie = true;
}
if(timeout == null) {
timeout = config.getTimeout();
}
return this;
}
@ -128,4 +128,15 @@ public class SaLoginModel {
}
/**
* toString
*/
@Override
public String toString() {
return "SaLoginModel [device=" + device + ", isLastingCookie=" + isLastingCookie + ", timeout=" + timeout + "]";
}
}

View File

@ -238,12 +238,16 @@ public class TestController {
return AjaxJson.getSuccessData("登录成功");
}
// 测试 浏览器访问 http://localhost:8081/test/test
@RequestMapping("test")
public AjaxJson test(HttpServletResponse response) {
System.out.println("进来了");
// StpUtil.setLoginId(10001, new SaLoginModel()
// .setDevice("PC") // 此次登录的客户端设备标识, 用于[同端互斥登录]时指定此次登录的设备名称
// .setIsLastingCookie(true) // 是否为持久Cookie临时Cookie在浏览器关闭时会自动删除持久Cookie在重新打开后依然存在
// .setTimeout(60 * 60 * 24 * 7) // 指定此次登录token的有效期, 单位: 如未指定自动取全局配置的timeout值
// );
return AjaxJson.getSuccess("访问成功");
}

View File

@ -35,6 +35,7 @@
- **附录**
- [未登录场景值](/fun/not-login-scene)
- [token有效期详解](/fun/token-timeout)
- [Session模型详解](/fun/session-model)
- [TokenInfo参数详解](/fun/token-info)

View File

@ -0,0 +1,21 @@
# Session模型详解
---
在`sa-token`中, `Session` 分为三种, 分别是:
- `User-Session`: 指的是框架为每个`loginId`分配的`Session`
- `Token-Session`: 指的是框架为每个`token`分配的`Session`
- `自定义Session`: 指的是以一个`特定的值`作为SessionId来分配的`Session`
User-Session和Token-Session到底有什么不同下面这张图可以解释两者的区别
![../static/session-model.png](../static/session-model.png)
简而言之:
- `Token-Session` 以token为主只要token不同那么对应的Session对象就不同
- `User-Session` 以UserId为主只要token指向的UserId一致那么对应的Session对象就一致
- `自定义Session` 以特定的key为主不同key对应不同的Session对象

BIN
sa-token-doc/doc/static/kickout.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
sa-token-doc/doc/static/not-jur.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
sa-token-doc/doc/static/not-login.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View File

@ -8,7 +8,9 @@
有,就让你通过。没有?那么禁止访问!
再往底了说,就是每个账号都会拥有一个权限码集合,我来验证这个集合中是否包含指定的权限码 <br/>
例如:当前账号拥有权限码集合:`["user:add", "user:delete", "user:get"]`,这时候我来验证权 `"user:update"`,则结果就是:**验证失败,禁止访问**
例如:当前账号拥有权限码集合:`["user:add", "user:delete", "user:get"]`,这时候我来验证权限 `"user:update"`,则其结果就是:**验证失败,禁止访问**
![无权限](../static/not-jur.png)
所以现在问题的核心就是:
1. 如何获取一个账号所拥有的的权限码集合

View File

@ -1,6 +1,8 @@
# 踢人下线
所谓踢人下线,核心操作就是找到其指定`loginId`对应的`token`,并设置其失效
![踢下线](../static/kickout.png)
---

View File

@ -7,6 +7,7 @@
所谓登录验证,说白了就是限制某些接口只有登录后才能访问(如:查询我的账号资料) <br>
那么判断一个会话是否登录的依据是什么?当然是登录成功后框架给你做个标记!然后在需要鉴权的接口里检查此标记,有标记者视为已登录,无标记者视为未登录!
![暂未登录](../static/not-login.png)
### 登录与注销

View File

@ -59,4 +59,23 @@ Remember me, it's too easy!
### 登录时指定token有效期
登录时不仅可以指定是否为`[记住我]`模式还可以指定一个特定的时间作为token有效时长如下示例
``` java
// 示例1
// 指定token有效期(单位: 秒)如下所示token七天有效
StpUtil.setLoginId(10001, new SaLoginModel().setTimeout(60 * 60 * 24 * 7));
// ----------------------- 示例2所有参数
// `SaLoginModel`为登录参数Model其有诸多参数决定登录时的各种逻辑例如
StpUtil.setLoginId(10001, new SaLoginModel()
.setDevice("PC") // 此次登录的客户端设备标识, 用于[同端互斥登录]时指定此次登录的设备名称
.setIsLastingCookie(true) // 是否为持久Cookie临时Cookie在浏览器关闭时会自动删除持久Cookie在重新打开后依然存在
.setTimeout(60 * 60 * 24 * 7) // 指定此次登录token的有效期, 单位:秒 如未指定自动取全局配置的timeout值
);
```

View File

@ -9,6 +9,8 @@ Session是会话中专业的数据缓存组件通过`Session`我们可以很
- `Token-Session`: 指的是框架为每个`token`分配的`Session`
- `自定义Session`: 指的是以一个`特定的值`作为SessionId来分配的`Session`
> 有关User-Session与Token-Session的详细区别请参考[Session模型详解](/fun/session-model)
### User-Session
有关账号Session的API如下