Solon

solon.sessionstate.jwt

<dependency>
    <groupId>org.noear</groupId>
    <artifactId>solon.sessionstate.jwt</artifactId>
</dependency>

1、描述

基础扩展插件,为 Solon Web 提供分布式会话状态支持。例如:管理后台要做集群,此时会话需要共享(插件:solon.sessionstate.jedis,也适合这种场景)。

2、配置参考

默认可以不加任何配置。但密钥建议配置个新的

#超时配置。单位秒(可不配,默认:7200)
server.session.timeout: 7200 
#可共享域配置(可不配,默认当前服务域名;多系统共享时要配置)
server.session.state.domain: "solon.noear.org"

#Jwt 令牌变量名;(可不配,默认:TOKEN)
server.session.state.jwt.name: "TOKEN" 
#Jwt 密钥(使用 JwtUtils.createKey() 生成);(可不配,默认:xxx)
server.session.state.jwt.secret: "E3F9N2kRDQf55pnJPnFoo5+ylKmZQ7AXmWeOVPKbEd8=" 
#Jwt 令牌前缀(可不配,默认:空)
server.session.state.jwt.prefix: "Bearer" 
#Jwt 充许超时;(可不配,默认:true);false,则token一直有效
server.session.state.jwt.allowExpire: true 
#Jwt 充许自动输出;(可不配,默认:true);flase,则不向header 或 cookie 设置值(由用户手动控制)
server.session.state.jwt.allowAutoIssue: true 
#Jwt 充许使用Header传递;(可不配,默认:使用 Cookie 传递);true,则使用 header 传递
server.session.state.jwt.allowUseHeader: false 

3、代码应用

@Controller
public class DemoController{
    @Mapping("/test")
    public void test(Context ctx){
        //获取会话
        long user_id = ctx.sessionAsLong("user_id", 0L);
        
        ctx.sessionSet("user_id", 1001L);
    }
}

//更多接口,可参考 SessionState 定义