shiro+springboot自定义sessionId - Go语言中文社区

shiro+springboot自定义sessionId


在shiro中,默认返回的sessionId是uuid或者是random随机的,我们可能需要根据我们的需求进行重写,需要重写sessionId我们只需要写一个类实现SessionIdGenerator中的generateId就行

 1.自定义sessionId生成

自定义CustomSessionIdGenerator实现SessionIdGenerator接口,重写generateId()方法:

package net.xdclass.rbac_shiro.config;

import org.apache.shiro.session.Session;
import org.apache.shiro.session.mgt.eis.SessionIdGenerator;

import java.io.Serializable;
import java.util.UUID;

/**
 * @author sqz
 * @Description: 自定义sessionId生成
 * @date 2019/7/3 8:50
 */
public class CustomSessionIdGenerator implements SessionIdGenerator {

    @Override
    public Serializable generateId(Session session) {
        return "xdclass"+ UUID.randomUUID().toString().replace("-","");
    }
}

不知道怎么写的直接看源码就行,找CustomSessionIdGenerator的实现类,复制实现代码休休改改就行,下面是源码:

上面我们就简单的重写了个实现方法,然后我们要怎么让实现类生效呢?

我们找到RedisSessionDAO这个类,点进去看源码,如下图:

里面没有设置sessionId的方法,在找其父类,发现里面有 设置我们实现好的CustomSessionIdGenerator的方法,如下图所示:

因为RedisSessionDAO继承了AbstractSessionDAO,所以也拥有了父类的方法,我们只需要将自定义好的CustomSessionIdGenerator设置到redisSessionDAO中就可以了,代码如下:

 /**
     * 自定义session持久化
     * @return
     */
    @Bean
    public RedisSessionDAO redisSessionDAO(){
        RedisSessionDAO redisSessionDAO = new RedisSessionDAO();
        redisSessionDAO.setRedisManager(getRedisManager());
        //直接看源码
        redisSessionDAO.setSessionIdGenerator(new CustomSessionIdGenerator());
        return redisSessionDAO;
    }

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_33355821/article/details/94545905
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 22:20:17
  • 阅读 ( 1136 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢