Sa-Token学习笔记-04
Sa-Token学习笔记-04
Session会话
Account-Session
以账号 id 为主,只要 token 指向的账号 id 一致,那么对应的Session对象就一致Token-Session
以token为主,只要token不同,那么对应的Session对象就不同Custom-Session
以特定的key为主,不同key对应不同的Session对象,同样的key指向同一个Session对象
假设三个客户端登录同一账号,且配置了不共享token,那么此时的Session模型是:
要点:
SaSession
与HttpSession
没有任何关系,在HttpSession
上写入的值,在SaSession
中无法取出HttpSession
并未被框架接管,在使用Sa-Token时,请在任何情况下均使用SaSession
,不要使用HttpSession
测试代码
package com.hayaizo.satoken.controller;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.session.SaSessionCustomUtil;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
import com.hayaizo.satoken.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.List;
/**
* @author moxiao
*/
@RestController
@RequestMapping("/session")
public class SaSessionController {
/*
* 前提:首先调用登录接口进行登陆
*/
// 简单存取值 ---- http://localhost:8081/session/getValue
@RequestMapping("getValue")
public SaResult getValue(){
// 获取当前账号的SaSession对象,它和HttpSession不一样
SaSession session = StpUtil.getSession();
// 存值
session.set("name","hayaizo");
session.set("age",18);
// 取值
Object name = session.get("name");
String name1 = session.getString("name");
int age = session.getInt("age");
long age1 = session.getLong("age");
float age2 = session.getFloat("age");
int age10 = session.get("age10", 22);
int age11 = session.get("age10", () -> {
return 26;
});
List<Object> list = Arrays.asList(name, name1, age, age1, age2, age11);
System.out.println(list);
return SaResult.data(list);
}
// 复杂存取值 ---- http://localhost:8081/session/getModel
@RequestMapping("getModel")
public SaResult getModel(){
// 实例化
User user = new User();
user.setName("hayaizo");
user.setId("1");
SaSession session = StpUtil.getSession();
session.set("user",user);
User sessionModel = session.getModel("user", User.class);
return SaResult.data(sessionModel);
}
// TokenSession
@RequestMapping("tokenSession")
public SaResult tokenSession(){
// 获取到当前的token
String tokenValue = StpUtil.getTokenValue();
SaSession tokenSession = StpUtil.getTokenSessionByToken(tokenValue);
return SaResult.data(tokenSession);
}
// 自定义Session --- http://localhost:8081/session/customSession
@RequestMapping("customSession")
public SaResult customSession(){
SaSession roleSession = SaSessionCustomUtil.getSessionById("role-1001");
// 存值
roleSession.set("test","testCustomSession");
System.out.println(roleSession.get("test"));
return SaResult.data(roleSession.get("test"));
}
}
版权申明
本文系作者 @hayaizo 原创发布在Hello World站点。未经许可,禁止转载。
暂无评论数据