shiro——SessionKey 系列源码

1. 类图

可以看出,shiro里的此接口实现比较简单。

1.1 SessionKey 接口

public interface SessionKey {
    Serializable getSessionId(); //获取会话Id
}

2. DefaultSessionKey 类

public class DefaultSessionKey implements SessionKey, Serializable {
    private Serializable sessionId; //会话Id
    public DefaultSessionKey() { }
    public DefaultSessionKey(Serializable sessionId) {
        this.sessionId = sessionId;
    }
    public void setSessionId(Serializable sessionId) { 
        this.sessionId = sessionId;
    }
    public Serializable getSessionId() {
        return this.sessionId;
    }
}

可以看到,这个类就是对SessionKey接口的简单实现, 另外,还实现了Serializable接口,说明这个类的实例化对象是可以用于持久化存储 和  网络传输,但是没有显示指定 serialVersionUID 的值,所以是JDK生成的,那么就会存在反序列化失败的情况(JDK版本不同,具体请查看https://blog.csdn.net/dgh112233/article/details/100573649

3. WebSessionKey 类

public class WebSessionKey extends DefaultSessionKey implements RequestPairSource {
    private final ServletRequest servletRequest; //http的request
    private final ServletResponse servletResponse; //http的response
    public WebSessionKey(ServletRequest request, ServletResponse response) {
        if (request == null) {
            throw new NullPointerException("request argument cannot be null.");
        } else if (response == null) {
            throw new NullPointerException("response argument cannot be null.");
        } else {
            this.servletRequest = request;
            this.servletResponse = response;
        }
    }
    public WebSessionKey(Serializable sessionId, ServletRequest request, ServletResponse response) {
        this(request, response);
        this.setSessionId(sessionId);
    }
    public ServletRequest getServletRequest() {
        return this.servletRequest;
    }
    public ServletResponse getServletResponse() {
        return this.servletResponse;
    }
}

这个类是DefaultSessionKey的基础上,集成了HTTP的东西,getServletRequest 和 getServletResponse 两个方法是实现的RequestPairSource接口的。意思就是SessionKey的web版本是将我们的SessionId 和 request、response两个东西关联起来。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值