ShiroRedisSessionDAO.java 3.86 KB
Newer Older
m1991's avatar
m1991 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
//package com.project.shiro.util.redis;
//
//import cn.wisenergy.service.common.utils.ByteUtil;
//import cn.wisenergy.service.common.utils.redis.RedisClient;
//import cn.wisenergy.service.common.utils.redis.RedisConsts;
//import org.apache.shiro.session.Session;
//import org.apache.shiro.session.UnknownSessionException;
//import org.apache.shiro.session.mgt.eis.AbstractSessionDAO;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import javax.annotation.Resource;
//import java.io.IOException;
//import java.io.Serializable;
//import java.util.Collection;
//import java.util.HashSet;
//import java.util.Set;
//
//public class ShiroRedisSessionDAO extends AbstractSessionDAO {
//
//    private static Logger logger = LoggerFactory.getLogger(ShiroRedisSessionDAO.class);
//
//    //注入redisClient实例
//    @Resource(name = "redisClient")
//    private RedisClient redisClient;
//
//    /**
//     * shiro-redis的session对象前缀
//     */
//
//    private String keyPrefix = RedisConsts.ADMIN_SHIRO_SESSION_KEY;
//
//    @Override
//    public void update(Session session) throws UnknownSessionException {
//        this.saveSession(session);
//    }
//
//    private void saveSession(Session session) throws UnknownSessionException {
//        if (session == null || session.getId() == null) {
//            logger.error("session or session id is null");
//            return;
//        }
//        this.redisClient.setAndExpire(this.getPreStringKey(session.getId()), session, RedisConsts.ADMIN_SHIRO_SESSION_EXPIRE);
//    }
//
//    @Override
//    public void delete(Session session) {
//        if (session == null || session.getId() == null) {
//            logger.error("session or session id is null");
//            return;
//        }
//        redisClient.del(getPreStringKey(session.getId()));
//
//    }
//
//    @Override
//    public Collection<Session> getActiveSessions() {
//        Set<Session> sessions = new HashSet<Session>();
//
//        Set<byte[]> keys = null;
//        try {
//            keys = redisClient.keys(ByteUtil.objectToBytes(this.keyPrefix + "*"));
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        if (keys != null && keys.size() > 0) {
//            for (byte[] key : keys) {
//                Session s = null;
//                try {
//                    s = (Session) ByteUtil.bytesToObject(redisClient.get(key));
//                } catch (IOException e) {
//                    e.printStackTrace();
//                } catch (ClassNotFoundException e) {
//                    e.printStackTrace();
//                }
//                sessions.add(s);
//            }
//        }
//
//        return sessions;
//    }
//
//    @Override
//    protected Serializable doCreate(Session session) {
//        Serializable sessionId = this.generateSessionId(session);
//        this.assignSessionId(session, sessionId);
//        this.saveSession(session);
//        return sessionId;
//    }
//
//    @Override
//    protected Session doReadSession(Serializable sessionId) {
//        if (sessionId == null) {
//            logger.error("session id is null");
//            return null;
//        }
//
//        Session s = (Session) redisClient.get(this.getPreStringKey(sessionId));
//        return s;
//    }
//
//    /**
//     * 获得String类型的key
//     *
//     * @param
//     * @return
//     */
//    private String getPreStringKey(Serializable sessionId) {
//        String preKey = this.keyPrefix + sessionId;
//        return preKey;
//    }
//
//    public String getKeyPrefix() {
//        return keyPrefix;
//    }
//
//    public void setKeyPrefix(String keyPrefix) {
//        this.keyPrefix = keyPrefix;
//    }
//
//    public void setRedisClient(RedisClient redisClient) {
//        this.redisClient = redisClient;
//    }
//
//    public RedisClient getRedisClient() {
//        return redisClient;
//    }
//
//}