要实现管理端对在线用户一个状态的管控,需要修改在线用户的session信息
代码如下所示
import org.apache.shiro.session.Session;
import org.apache.shiro.session.mgt.eis.SessionDAO;
import org.apache.shiro.subject.Subject;
//引用shiro管理的SessionDao
@Autowired
private SessionDAO sessionDAO;
@Override
public void dealSession(String userId, int type) {
//获取所有的在线session
Collection<Session> sessions = sessionDAO.getActiveSessions();
for(Session session:sessions){
//通过userId和在登录时记录到session会话的userId做对比,在线用户是否存在该用户
if(session.getAttribute("userId") != null && userId.equals(session.getAttribute("userId").toString())){
//通过session获取到该用户的所有信息
QcodeUser user = (QcodeUser)session.getAttribute("userInfo");
user.setIsSilence(type);
break;
}
}
return;
}