List of usage examples for org.apache.shiro.session.mgt SimpleSession getLastAccessTime
public Date getLastAccessTime()
From source file:com.funtl.framework.apache.shiro.session.JedisSessionDAO.java
License:Apache License
/** * ??/* w w w.j a v a2 s. c o m*/ * * @param includeLeave ??3? * @param principal ??? * @param filterSession ???? * @return */ @Override public Collection<Session> getActiveSessions(boolean includeLeave, Object principal, Session filterSession) { Set<Session> sessions = Sets.newHashSet(); Jedis jedis = null; try { jedis = JedisUtils.getResource(); Map<String, String> map = jedis.hgetAll(sessionKeyPrefix); for (Map.Entry<String, String> e : map.entrySet()) { if (StringUtils.isNotBlank(e.getKey()) && StringUtils.isNotBlank(e.getValue())) { String[] ss = StringUtils.split(e.getValue(), "|"); if (ss != null && ss.length == 3) {// jedis.exists(sessionKeyPrefix + e.getKey())){ // Session session = (Session)JedisUtils.toObject(jedis.get(JedisUtils.getBytesKey(sessionKeyPrefix + e.getKey()))); SimpleSession session = new SimpleSession(); session.setId(e.getKey()); session.setAttribute("principalId", ss[0]); session.setTimeout(Long.valueOf(ss[1])); session.setLastAccessTime(new Date(Long.valueOf(ss[2]))); try { // ?SESSION session.validate(); boolean isActiveSession = false; // ????3? if (includeLeave || DateUtils.pastMinutes(session.getLastAccessTime()) <= 3) { isActiveSession = true; } // ?? if (principal != null) { PrincipalCollection pc = (PrincipalCollection) session .getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY); if (principal.toString().equals( pc != null ? pc.getPrimaryPrincipal().toString() : StringUtils.EMPTY)) { isActiveSession = true; } } // SESSION if (filterSession != null && filterSession.getId().equals(session.getId())) { isActiveSession = false; } if (isActiveSession) { sessions.add(session); } } // SESSION? catch (Exception e2) { jedis.hdel(sessionKeyPrefix, e.getKey()); } } // SESSION?? else { jedis.hdel(sessionKeyPrefix, e.getKey()); } } // SESSIONValue else if (StringUtils.isNotBlank(e.getKey())) { jedis.hdel(sessionKeyPrefix, e.getKey()); } } logger.info("getActiveSessions size: {} ", sessions.size()); } catch (Exception e) { logger.error("getActiveSessions", e); } finally { JedisUtils.returnResource(jedis); } return sessions; }
From source file:com.leshazlewood.samples.shiro.cassandra.CassandraSessionDAO.java
License:Apache License
protected void save(SimpleSession ss) { //Cassandra TTL values are in seconds, so we need to convert from Shiro's millis: int timeoutInSeconds = (int) (ss.getTimeout() / 1000); PreparedStatement ps = prepareSaveStatement(); BoundStatement bs = new BoundStatement(ps); byte[] serialized = serializer.serialize(ss); ByteBuffer bytes = ByteBuffer.wrap(serialized); bs.bind(timeoutInSeconds, ss.getStartTimestamp(), ss.getStopTimestamp() != null ? ss.getStartTimestamp() : null, ss.getLastAccessTime(), ss.getTimeout(), ss.isExpired(), ss.getHost(), bytes, ss.getId()); cassandraSession.execute(bs);//ww w . j a v a 2s . co m }
From source file:com.wms.studio.controller.admin.UserAdminManagerController.java
License:Apache License
@RequestMapping("admin/userManager/userOnlineStore") public void getOnlineUsers(Model model) { Iterator<Session> sessions = sessionDao.getActiveSessions().iterator(); ArrayList<OnlineUser> ous = new ArrayList<OnlineUser>(); while (sessions.hasNext()) { OnlineUser ou = new OnlineUser(); SimpleSession session = (SimpleSession) sessions.next(); ou.setHost(session.getHost());//from w w w . jav a 2 s . co m ou.setId(session.getId().toString()); ou.setLastAccessTime(session.getLastAccessTime()); ou.setStartTime(session.getStartTimestamp()); PrincipalCollection principal = (PrincipalCollection) session .getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY); if (principal != null) { ShiroUser su = (ShiroUser) principal.getPrimaryPrincipal(); ou.setUserid(su.loginName); ou.setUsername(su.name); ou.setLogin(true); } ous.add(ou); } model.addAttribute("users", ous); model.addAttribute("total", ous.size()); }