检索配置所用的SessionDao,一般去shiro配置文件或者配置类里面去找,当然如果实在找不到,随便定义一个SessionDao,报错信息会告诉你正确的SessionDao是啥的。。
实现代码如下
@Resource
MemorySessionDAO sessionDAO;
/**
* 获取指定用户名的Session
*
* @return
*/
public Session getSessionByUsername(String userid) {
Collection<Session> sessions = sessionDAO.getActiveSessions();
UserDO user;
Object attribute;
for (Session session : sessions) {
attribute = session.getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY);
if (attribute == null) {
continue;
}
user = (UserDO) ((SimplePrincipalCollection) attribute).getPrimaryPrincipal();
if (user == null) {
continue;
}
if (userid.equals(user.getUserId()+"")) {
return session;
}
}
return null;
}