한 걸음 한 걸음 shiro - 4 설정 을 가르쳐 주 고 session Dao 를 사용자 정의 합 니 다.

2394 단어
  • 한 걸음 한 걸음 shiro - 1 로 shiro 프레임 워 크 도입
  • 한 걸음 한 걸음 shiro - 2 설정 과 사용자 정의 realm
  • 을 가르쳐 줍 니 다.
  • shiro - 3 설정 및 사용자 정의 session Manager
  • 한 걸음 한 걸음 shiro - 4 설정 을 사용 하고 session Dao
  • 를 사용자 정의 하 는 것 을 가르쳐 줍 니 다.
  • 한 걸음 한 걸음 shiro - 5 설정 remembeMe
  • 한 걸음 한 걸음 shiro - 6 총화 와 소감
  • 을 가르쳐 준다.
    public class MyRedisSessionDao extends AbstractSessionDAO{
        //redis session    
        private static final int SESSION_EXPIRE = 60 * 30;
        @Resource
        private RedisClient client;
    
    
        @Override
        protected Serializable doCreate(Session session) {
            Serializable sessionId = generateSessionId(session);
            assignSessionId(session,sessionId);
            byte[] keyByte = RedisKey.getKeyByte(RedisKey.SESSION_PRE, sessionId.toString());
            byte[] sessionByte = SerializationUtils.serialize(session);
            client.setEx(keyByte, sessionByte, SESSION_EXPIRE);
            return sessionId;
        }
    
        @Override
        protected Session doReadSession(Serializable sessionId) {
            if (sessionId == null) {
                return null;
            }
            byte[] keyByte = RedisKey.getKeyByte(RedisKey.SESSION_PRE, sessionId.toString());
            byte[] sessionByte = client.get(keyByte);
            return (Session) SerializationUtils.deserialize(sessionByte);
        }
    
        @Override
        public void update(Session session) throws UnknownSessionException {
            byte[] keyByte = RedisKey.getKeyByte(RedisKey.SESSION_PRE, session.getId().toString());
            byte[] sessionByte = SerializationUtils.serialize(session);
            client.setEx(keyByte, sessionByte, SESSION_EXPIRE);
        }
    
        @Override
        public void delete(Session session) {
            byte[] keyByte = RedisKey.getKeyByte(RedisKey.SESSION_PRE, session.getId().toString());
            client.delete(keyByte);
        }
    
        @Override
        public Collection getActiveSessions() {
            Set keyByteSet = client.keys((RedisKey.SESSION_PRE + "*").getBytes());
            Set sessionSet = Sets.newHashSet();
            for (byte[] keyByte : keyByteSet) {
                byte[] sessionByte = client.get(keyByte);
                Session session = (Session) SerializationUtils.deserialize(sessionByte);
                if (session != null) {
                    sessionSet.add(session);
                }
            }
            return sessionSet;
        }
    }
    
    

    좋은 웹페이지 즐겨찾기