@Override public boolean forceLogout(String sessionId) { Session session = sessionDAO.readSession(sessionId); session.setTimeout(0); session.stop(); sessionDAO.delete(session); return true; }
protected void onChange(Session session) { sessionDAO.update(session); }
/** * Persists the given session instance to an underlying EIS (Enterprise Information System). This implementation * delegates and calls * <code>this.{@link SessionDAO sessionDAO}.{@link SessionDAO#create(org.apache.shiro.session.Session) create}(session);<code> * * @param session the Session instance to persist to the underlying EIS. */ protected void create(Session session) { if (log.isDebugEnabled()) { log.debug("Creating new EIS record for new session instance [" + session + "]"); } sessionDAO.create(session); }
expect(sessionDAO.create(eq(session1))).andReturn(sessionId1); sessionDAO.update(eq(session1)); expectLastCall().anyTimes(); replay(sessionDAO); reset(sessionDAO); expect(sessionDAO.readSession(sessionId1)).andReturn(session1).anyTimes(); sessionDAO.update(eq(session1)); replay(sessionDAO); sm.setTimeout(new DefaultSessionKey(sessionId1), 1); expect(sessionDAO.readSession(sessionId1)).andReturn(session1); sessionDAO.update(eq(session1)); //update's the stop timestamp sessionDAO.delete(session1); replay(sessionDAO);
protected Session retrieveSessionFromDataSource(Serializable sessionId) throws UnknownSessionException { return sessionDAO.readSession(sessionId); }
protected void delete(Session session) { sessionDAO.delete(session); }
Session session = subject.getSession(false); if (session != null) { session = sessionDAO.readSession(session.getId()); onlineSession.stop(); onlineSession.setStatus(OnlineStatus.OFFLINE); sessionDAO.update(onlineSession); request.setAttribute(RESPONSE_REPLY_CODE, ReplyCode.TxnSessionKickedOut); request.setAttribute(RESPONSE_REDIRECT_URL, shiroEnv.getUserForceLogoutUrl()); onlineSession.setUserId(principal.getUserId()); sessionDAO.update(onlineSession);
protected Collection<Session> getActiveSessions() { Collection<Session> active = sessionDAO.getActiveSessions(); return active != null ? active : Collections.<Session>emptySet(); }
protected Session retrieveSessionFromDataSource(Serializable sessionId) throws UnknownSessionException { return sessionDAO.readSession(sessionId); }
protected void delete(Session session) { sessionDAO.delete(session); }
protected Collection<Session> getActiveSessions() { Collection<Session> active = sessionDAO.getActiveSessions(); return active != null ? active : Collections.<Session>emptySet(); }
protected Session retrieveSessionFromDataSource(Serializable sessionId) throws UnknownSessionException { return sessionDAO.readSession(sessionId); }
protected void delete(Session session) { sessionDAO.delete(session); }
protected void onChange(Session session) { sessionDAO.update(session); }
@Override public List<UserOnline> list() { List<UserOnline> list = new ArrayList<>(); Collection<Session> sessions = sessionDAO.getActiveSessions(); for (Session session : sessions) { UserOnline userOnline = new UserOnline(); User user; SimplePrincipalCollection principalCollection; if (session.getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY) == null) { continue; } else { principalCollection = (SimplePrincipalCollection) session .getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY); user = (User) principalCollection.getPrimaryPrincipal(); userOnline.setUsername(user.getUsername()); userOnline.setUserId(user.getUserId().toString()); } userOnline.setId((String) session.getId()); userOnline.setHost(session.getHost()); userOnline.setStartTimestamp(session.getStartTimestamp()); userOnline.setLastAccessTime(session.getLastAccessTime()); long timeout = session.getTimeout(); userOnline.setStatus(timeout == 0L ? "0" : "1"); String address = AddressUtils.getCityInfo(userOnline.getHost()); userOnline.setLocation(address); userOnline.setTimeout(timeout); list.add(userOnline); } return list; }
/** * Persists the given session instance to an underlying EIS (Enterprise Information System). This implementation * delegates and calls * <code>this.{@link SessionDAO sessionDAO}.{@link SessionDAO#create(org.apache.shiro.session.Session) create}(session);<code> * * @param session the Session instance to persist to the underlying EIS. */ protected void create(Session session) { if (log.isDebugEnabled()) { log.debug("Creating new EIS record for new session instance [" + session + "]"); } sessionDAO.create(session); }
@Override protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) throws Exception { Subject subject = getSubject(request, response); if (subject == null || subject.getSession() == null) { return true; } Session session = sessionDAO.readSession(subject.getSession().getId()); if (session != null && session instanceof OnlineSession) { OnlineSession onlineSession = (OnlineSession) session; request.setAttribute(ShiroConstants.ONLINE_SESSION, onlineSession); // 把user id设置进去 //boolean isGuest = onlineSession.getUserId() == null ; if (StringUtils.isEmpty(onlineSession.getUserId())) { User user = UserUtils.getUser(); if (user != null) { onlineSession.setUserId(user.getId()); onlineSession.setUsername(user.getUsername()); onlineSession.markAttributeChanged(); } } if (onlineSession.getStatus() == OnlineSession.OnlineStatus.force_logout) { return false; } } return true; }
public void onStop(Session session) { LOGGER.debug("session onStop ID: " + session.getId()); this.sessionDAO.delete(session); }
protected void onChange(Session session) { sessionDAO.update(session); }
protected Collection<Session> getActiveSessions() { Collection<Session> active = sessionDAO.getActiveSessions(); return active != null ? active : Collections.<Session>emptySet(); }