sa-token使用(源码解析 + 万字)

public void setTokenValue(String tokenValue, int cookieTimeout){

SaTokenConfig config = getConfig();

// 将token保存到[存储器]里

SaStorage storage = SaHolder.getStorage();

// 判断是否配置了token前缀

String tokenPrefix = config.getTokenPrefix();

if(SaFoxUtil.isEmpty(tokenPrefix)) {

storage.set(splicingKeyJustCreatedSave(), tokenValue);

} else {

// 如果配置了token前缀,则拼接上前缀一起写入

storage.set(splicingKeyJustCreatedSave(), tokenPrefix + SaTokenConsts.TOKEN_CONNECTOR_CHAT + tokenValue);

}

// 注入Cookie

if(config.getIsReadCookie()){

SaResponse response = SaHolder.getResponse();

response.addCookie(getTokenName(), tokenValue, “/”, config.getCookieDomain(), cookieTimeout);

}

}

SaStorage是一个接口,set方法是把token存入request对象中。

关键是下面一段:

esponse.addCookie(getTokenName(), tokenValue, “/”, config.getCookieDomain(), cookieTimeout);

这句话利用cookie保存了当前登录用户的token。

谷歌浏览器查看cookie方式:右上角有三个点的按钮 - 设置

image

image

搜索localhost,找到satoken,这就是上面代码中getTokenName()方法的返回值

image

步骤 6 sa-token为什么能获取到response对象?SaHolder的秘密。。。(深挖,看不懂就跳过,没事)

===========================================================

之前我也一直想不通一个问题,sa-token用起来也太方便了吧,就这么一句话,什么都搞定了。我也不需要去关心session,也不要管HttpServletResponse啥的。

秘密就在这:

SaResponse response = SaHolder.getResponse();

SaHolder调用getResponse方法得到SaResponse, 这个SaResponse是一个接口

package cn.dev33.satoken.context.model;

/**

  • Response 包装类

  • @author kong

*/

public interface SaResponse {

/**

  • 获取底层源对象

  • @return see note

*/

public Object getSource();

/**

  • 删除指定Cookie

  • @param name Cookie名称

*/

public void deleteCookie(String name);

/**

  • 写入指定Cookie

  • @param name Cookie名称

  • @param value Cookie值

  • @param path Cookie路径

  • @param domain Cookie的作用域

  • @param timeout 过期时间 (秒)

*/

public void addCookie(String name, String value, String path, String domain, int timeout);

/**

  • 在响应头里写入一个值

  • @param name 名字

  • @param value 值

  • @return 对象自身

*/

public SaResponse setHeader(String name, String value);

/**

  • 在响应头写入 [Server] 服务器名称

  • @param value 服务器名称

  • @return 对象自身

*/

public default SaR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值