一、shiro的SessionDAO实现使用SessionIdGenerator接口自动的生成会话session ID;
二、SessionIdGenerator的具体实现类是JavaUuidSessionIdGenerator,生成会话ID的方法如下:
public Serializable generateId(Session session) {
return UUID.randomUUID().toString();
}
三、我们可以自定义生成会话ID的方法,具体的类需要实现SessionIdGenerator接口,如下所示:
package ggauth.shiro.user.common;
import java.io.Serializable;
import org.apache.shiro.session.Session;
import org.apache.shiro.session.mgt.eis.JavaUuidSessionIdGenerator;
import org.apache.shiro.session.mgt.eis.SessionIdGenerator;
import framework.store.log.GGLogger;
/**
* @Description:TODO
* @version 1.0
* @since JDK1.7
* @author yaomy
* @company xxxxxxxxxxxxxx
* @copyright (c) 2017 yaomy Co'Ltd Inc. All rights reserved.
* @date 2017年9月28日 下午4:59:11
*/
public class UuidSessionIdGenerator implements SessionIdGenerator{
@Override
public Serializable generateId(Session session) {
Serializable uuid = new JavaUuidSessionIdGenerator().generateId(session);
GGLogger.info("生成的sessionid是:"+uuid);
return uuid;
}
}
四、上一步已经实现了会话ID的自动生成类接下来就是如何是程序自动的加载我们的实现类了,其实很简单只需要如下配置就可以自动的加载我们的实现类了
###自定义生成sessionid
sessionIdGenerator=ggauth.shiro.user.common.UuidSessionIdGenerator
securityManager.sessionManager.sessionDAO.sessionIdGenerator=$sessionIdGenerator