sa-token開發時遇到的問題
背景
我的項目的登錄接口在登錄時會去獲取用戶的菜單,但是我在獲取菜單的方法里邏輯寫錯了(登錄接口不是我負責的,我寫的是菜單),
我使用UserUtils.getCurrentTenantId()去獲取用戶的信息(它會從session里獲取用戶信息),這是很明顯的錯誤,因為我現在都沒登錄怎么獲取登錄后的信息呢?
但是我在本地運行時候,一點問題也沒有,導致我也沒有發現這個問題,但是當后端部署到服務器上測試環境后就報錯了。
解決
雖然這個問題很簡單,一下子就改了,但是我就是很好奇,為什么我本地一點問題也沒有呢?哪怕是我重啟了后臺服務,它還是能獲取到session,
我問了ai,它告訴我sa-token是默認存在內存的。。。我也信了,因為我看了我們項目的Sa-token配置,并沒有去配置redis

我們項目的配置
# sa-token 配置
# token 名稱 (同時也是 cookie 名稱)
sa-token.token-name = Authorization
# token 有效期(單位:秒) 默認30天,-1 代表永久有效
sa-token.timeout = 2592000
# token 最低活躍頻率(單位:秒),如果 token 超過此時間沒有訪問系統就會被凍結,默認-1 代表不限制,永不凍結
sa-token.active-timeout = -1
# 是否允許同一賬號多地同時登錄 (為 true 時允許一起登錄, 為 false 時新登錄擠掉舊登錄)
sa-token.is-concurrent = true
# 在多人登錄同一賬號時,是否共用一個 token (為 true 時所有登錄共用一個 token, 為 false 時每次登錄新建一個 token)
sa-token.is-share = false
# token 風格(默認可取值:uuid、simple-uuid、random-32、random-64、random-128、tik)
sa-token.token-style = uuid
# 是否輸出操作日志
sa-token.is-log = true
# 同一賬號登錄數量登錄限制 默認值12,-1代表不做限制
sa-token.max-login-count = 48
但是我去看了sa-token官網,只需要引入依賴,不需要配置,它就會使用redis來持久化,我們項目也是這樣做的
<!-- sa-token-->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot3-starter</artifactId>
</dependency>
<!-- Sa-Token 整合 Redis (使用 jackson 序列化方式) -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-redis-jackson</artifactId>
</dependency>
引入依賴后,sa-token底層就會使用redis


浙公網安備 33010602011771號