diff --git a/sa-token-doc/static/doc.css b/sa-token-doc/static/doc.css index f223bc54..34039a8b 100644 --- a/sa-token-doc/static/doc.css +++ b/sa-token-doc/static/doc.css @@ -255,8 +255,8 @@ body{ @media screen and (min-width: 800px) { [title=s-w],[title=s-w-sh]{max-width: 80%;} } -[title=s-w-sh]{display: inline-block; border: 1px #eee solid;} -[title=w-100]{display: inline-block; border: 1px #eee solid; max-width: 100%;} +.s-w-sh, [title=s-w-sh]{display: inline-block; border: 1px #eee solid;} +.w-100, [title=w-100]{display: inline-block; border: 1px #eee solid; max-width: 100%;} /* 鼠标悬浮时切换img */ .hover-change-img {border: 1px #eee solid; max-width: 100%; } diff --git a/sa-token-doc/use/at-check.md b/sa-token-doc/use/at-check.md index e39c2132..2bf9f05b 100644 --- a/sa-token-doc/use/at-check.md +++ b/sa-token-doc/use/at-check.md @@ -17,12 +17,12 @@ - `@SaCheckSign`:API 签名校验 —— 用于跨系统的 API 签名参数校验。 - `@SaIgnore`:忽略校验 —— 表示被修饰的方法或类无需进行注解鉴权和路由拦截器鉴权。 -Sa-Token 使用全局拦截器完成注解鉴权功能,为了不为项目带来不必要的性能负担,拦截器默认处于关闭状态
-因此,为了使用注解鉴权,**你必须手动将 Sa-Token 的全局拦截器注册到你项目中** +Sa-Token 使用全局拦截器完成注解鉴权功能,为了不为项目带来不必要的性能负担,拦截器默认处于关闭状态。 +因此,为了使用注解鉴权,**你必须手动将 Sa-Token 的全局拦截器注册到你项目中**。 ### 1、注册拦截器 -以`SpringBoot2.0`为例,新建配置类`SaTokenConfigure.java` +以 SpringBoot2 项目为例,新建配置类`SaTokenConfigure.java` ``` java @Configuration diff --git a/sa-token-doc/use/jur-auth.md b/sa-token-doc/use/jur-auth.md index 4424f1c3..dab5e66a 100644 --- a/sa-token-doc/use/jur-auth.md +++ b/sa-token-doc/use/jur-auth.md @@ -10,7 +10,7 @@ - 管理员账号访问:正常返回数据。 - 普通账号访问:权限不足,拒绝访问。 -![基础-权限认证.svg](../big-file/use/use-jur-auth.svg 'w-100') + 那么框架是如何判断,一个账号是否有权限访问某个接口的呢? @@ -20,7 +20,7 @@ - 有,就让你通过。 - 没有?那么禁止访问! -![基础-权限校验.svg](../big-file/use/use-jur-check.svg 'w-100') + 所以现在问题的核心就是两个: @@ -174,7 +174,7 @@ StpUtil.hasPermission("index.html"); // false ### 7、如何把权限精确到按钮级? 权限精确到按钮级的意思就是指:**权限范围可以控制到页面上的每一个按钮是否显示**。 -![基础-按钮级权限.svg](../big-file/use/use-jur-btn.svg 'w-100') + 思路:如此精确的范围控制只依赖后端已经难以完成,此时需要前端进行一定的逻辑判断。 diff --git a/sa-token-doc/use/login-auth.md b/sa-token-doc/use/login-auth.md index af10bf6b..22ec0ecc 100644 --- a/sa-token-doc/use/login-auth.md +++ b/sa-token-doc/use/login-auth.md @@ -13,7 +13,7 @@ 在整个流程中,Sa-Token 负责哪些部分呢? 下图可以帮助你理解: -![基础-登录认证流程图.svg](../big-file/use/use-login-auth.svg 'w-100') + 如上图所示:**无论用户采用何种登录方式,本质上都是通过提交一定的认证信息,使系统可以定位到 Ta 的唯一标识 —— userId**。 @@ -76,7 +76,7 @@ public SaResult doLogin(String name, String pwd) { - 如果校验通过,则:正常返回数据。 - 如果校验未通过,则:抛出异常,告知其需要先进行登录。 -![基础-登录校验流程图.svg](../big-file/use/use-login-check.svg 'w-100') + diff --git a/sa-token-doc/use/route-check.md b/sa-token-doc/use/route-check.md index f036420e..196c1642 100644 --- a/sa-token-doc/use/route-check.md +++ b/sa-token-doc/use/route-check.md @@ -1,16 +1,17 @@ # 路由拦截鉴权 +假设我们有如下需求:*项目中所有接口均需要登录校验,只有 “登录接口” 本身对外开放*。 + +如果给每个接口都手动加上注解鉴权,将会是一件比较麻烦的事情,这时候使用拦截器鉴权模式将大大降低我们的代码量。 + + + + + +如上图所示,拦截器将拦截除登录以外的所以请求,并进行一道前置审核决定是否通过。 + --- -假设我们有如下需求: -> [!INFO| label:需求场景] -> 项目中所有接口均需要登录认证,只有 “登录接口” 本身对外开放 - -我们怎么实现呢?给每个接口加上鉴权注解?手写全局拦截器?似乎都不是非常方便。 - -在这个需求中我们真正需要的是一种基于路由拦截的鉴权模式,那么在Sa-Token怎么实现路由拦截鉴权呢? - - ### 1、注册 Sa-Token 路由拦截器 以`SpringBoot2.0`为例,新建配置类`SaTokenConfigure.java` @@ -35,7 +36,7 @@ public class SaTokenConfigure implements WebMvcConfigurer { ### 2、校验函数详解 自定义认证规则:`new SaInterceptor(handle -> StpUtil.checkLogin())` 是最简单的写法,代表只进行登录校验功能。 -我们可以往构造函数塞一个完整的 lambda 表达式,来定义详细的校验规则,例如: +我们可以往构造函数塞一个完整的 lambda 函数,来定义详细的校验规则,例如: ``` java @Configuration diff --git a/sa-token-doc/use/session.md b/sa-token-doc/use/session.md index dead0342..b8af57c6 100644 --- a/sa-token-doc/use/session.md +++ b/sa-token-doc/use/session.md @@ -24,7 +24,7 @@ SysUser user = (SysUser) StpUtil.getSession().get("user"); > 有关 Account-Session 与 Token-Session 的详细区别,可参考:[Session模型详解](/fun/session-model) -### Account-Session +### 2、Account-Session 有关 账号-Session 的 API 如下: ``` java // 获取当前账号 id 的 Account-Session (必须是登录后才能调用) @@ -44,7 +44,7 @@ StpUtil.getSessionBySessionId("xxxx-xxxx"); ``` -### Token-Session +### 3、Token-Session 有关 令牌-Session 的 API 如下: ``` java // 获取当前 Token 的 Token-Session 对象 @@ -55,7 +55,7 @@ StpUtil.getTokenSessionByToken(token); ``` -### Custom-Session +### 4、Custom-Session 自定义 Session 指的是以一个`特定的值`作为 SessionId 来分配的`Session`, 借助自定义Session,你可以为系统中的任意元素分配相应的session
例如以商品 id 作为 key 为每个商品分配一个Session,以便于缓存和商品相关的数据,其相关API如下: ``` java @@ -73,7 +73,7 @@ SaSessionCustomUtil.deleteSessionById("goods-10001"); ``` -### 在 Session 上存取值 +### 5、在 Session 上存取值 以上三种 Session 均为框架设计概念上的区分,实际上在获取它们时,返回的都是 SaSession 对象,你可以使用以下 API 在 SaSession 对象上存取值: @@ -118,7 +118,7 @@ session.keys(); ``` -### 其它操作 +### 6、其它操作 ``` java // 返回此 Session 的id @@ -138,7 +138,7 @@ session.logout(); ``` -### 避免与 HttpSession 混淆使用 +### 7、避免与 HttpSession 混淆使用 经常有同学会把 `SaSession` 与 `HttpSession` 进行混淆,例如: ``` java @PostMapping("/resetPoints") @@ -154,7 +154,7 @@ public void reset(HttpSession session) { 2. `HttpSession`并未被框架接管,在使用Sa-Token时,请在任何情况下均使用`SaSession`,不要使用`HttpSession` -### 未登录场景下获取 Token-Session +### 8、未登录场景下获取 Token-Session 默认场景下,只有登录后才能通过 `StpUtil.getTokenSession()` 获取 `Token-Session`。