检索配置所用的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;
}
这篇博客探讨了在Apache Shiro框架中如何查找和配置SessionDao。作者提供了一个示例代码,展示了如何通过`@Resource`注解注入`MemorySessionDAO`来获取并遍历活动会话,从而找到指定用户名的Session。博客强调,当无法直接找到合适的SessionDao时,可以尝试定义一个,并根据错误信息进行调整。
1243





