mirror of
https://gitee.com/dromara/MaxKey.git
synced 2025-12-07 01:18:27 +08:00
Sessions
This commit is contained in:
parent
e51a3a25ba
commit
9221064088
@ -47,11 +47,11 @@ public class AbstractSessionService implements SessionService{
|
|||||||
"update mxk_history_login set logouttime = ? ,sessionstatus = 7 where sessionid = ?";
|
"update mxk_history_login set logouttime = ? ,sessionstatus = 7 where sessionid = ?";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<HistoryLogin> queryOnlineTicket() {
|
public List<HistoryLogin> querySessions() {
|
||||||
List<HistoryLogin> listOnlineTicket = jdbcTemplate.query(
|
List<HistoryLogin> listSessions = jdbcTemplate.query(
|
||||||
DEFAULT_DEFAULT_SELECT_STATEMENT,
|
DEFAULT_DEFAULT_SELECT_STATEMENT,
|
||||||
new OnlineTicketRowMapper());
|
new OnlineTicketRowMapper());
|
||||||
return listOnlineTicket;
|
return listSessions;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void profileLastLogoffTime(String userId,String lastLogoffTime) {
|
public void profileLastLogoffTime(String userId,String lastLogoffTime) {
|
||||||
@ -93,27 +93,27 @@ public class AbstractSessionService implements SessionService{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void store(String ticketId, Session ticket) {
|
public void store(String sessionId, Session session) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Session remove(String ticket) {
|
public Session remove(String sessionId) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Session get(String ticketId) {
|
public Session get(String sessionId) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void refresh(String ticketId, LocalTime refreshTime) {
|
public void refresh(String sessionId, LocalTime refreshTime) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void refresh(String ticketId) {
|
public void refresh(String sessionId) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -58,25 +58,25 @@ public class RedisSessionService extends AbstractSessionService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void store(String ticketId, Session ticket) {
|
public void store(String sessionId, Session ticket) {
|
||||||
RedisConnection conn=connectionFactory.getConnection();
|
RedisConnection conn=connectionFactory.getConnection();
|
||||||
conn.setexObject(PREFIX+ticketId, serviceTicketValiditySeconds, ticket);
|
conn.setexObject(PREFIX+sessionId, serviceTicketValiditySeconds, ticket);
|
||||||
conn.close();
|
conn.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Session remove(String ticketId) {
|
public Session remove(String sessionId) {
|
||||||
RedisConnection conn=connectionFactory.getConnection();
|
RedisConnection conn=connectionFactory.getConnection();
|
||||||
Session ticket = conn.getObject(PREFIX+ticketId);
|
Session ticket = conn.getObject(PREFIX+sessionId);
|
||||||
conn.delete(PREFIX+ticketId);
|
conn.delete(PREFIX+sessionId);
|
||||||
conn.close();
|
conn.close();
|
||||||
return ticket;
|
return ticket;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Session get(String ticketId) {
|
public Session get(String sessionId) {
|
||||||
RedisConnection conn=connectionFactory.getConnection();
|
RedisConnection conn=connectionFactory.getConnection();
|
||||||
Session session = conn.getObject(PREFIX+ticketId);
|
Session session = conn.getObject(PREFIX+sessionId);
|
||||||
conn.close();
|
conn.close();
|
||||||
return session;
|
return session;
|
||||||
}
|
}
|
||||||
@ -95,8 +95,8 @@ public class RedisSessionService extends AbstractSessionService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void refresh(String ticketId) {
|
public void refresh(String sessionId) {
|
||||||
Session session = get(ticketId);
|
Session session = get(sessionId);
|
||||||
|
|
||||||
LocalTime currentTime = LocalTime.now();
|
LocalTime currentTime = LocalTime.now();
|
||||||
Duration duration = Duration.between(currentTime, session.getLastAccessTime());
|
Duration duration = Duration.between(currentTime, session.getLastAccessTime());
|
||||||
@ -105,7 +105,7 @@ public class RedisSessionService extends AbstractSessionService {
|
|||||||
|
|
||||||
if(duration.getSeconds() > Session.MAX_EXPIRY_DURATION) {
|
if(duration.getSeconds() > Session.MAX_EXPIRY_DURATION) {
|
||||||
session.setLastAccessTime(currentTime);
|
session.setLastAccessTime(currentTime);
|
||||||
refresh(ticketId,currentTime);
|
refresh(sessionId,currentTime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -24,19 +24,19 @@ import org.maxkey.entity.HistoryLogin;
|
|||||||
|
|
||||||
public interface SessionService {
|
public interface SessionService {
|
||||||
|
|
||||||
public void store(String ticketId, Session ticket);
|
public void store(String sessionId, Session session);
|
||||||
|
|
||||||
public Session remove(String ticket);
|
public Session remove(String sessionId);
|
||||||
|
|
||||||
public Session get(String ticketId);
|
public Session get(String sessionId);
|
||||||
|
|
||||||
public void refresh(String ticketId ,LocalTime refreshTime);
|
public void refresh(String sessionId ,LocalTime refreshTime);
|
||||||
|
|
||||||
public void refresh(String ticketId);
|
public void refresh(String sessionId);
|
||||||
|
|
||||||
public void setValiditySeconds(int validitySeconds);
|
public void setValiditySeconds(int validitySeconds);
|
||||||
|
|
||||||
public List<HistoryLogin> queryOnlineTicket();
|
public List<HistoryLogin> querySessions();
|
||||||
|
|
||||||
public void terminate(String onlineTicket,String userId,String username);
|
public void terminate(String sessionId,String userId,String username);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -39,24 +39,27 @@ public class InMemoryMomentaryService implements MomentaryService{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void put(String ticket , String name, Object value){
|
public void put(String sessionId , String name, Object value){
|
||||||
momentaryStore.put(getKey(ticket,name), value);
|
_logger.trace("key {}, value {}",getSessionKey(sessionId , name),value);
|
||||||
|
momentaryStore.put(getSessionKey(sessionId,name), value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object remove(String ticket , String name) {
|
public Object remove(String sessionId , String name) {
|
||||||
Object value = momentaryStore.getIfPresent(getKey(ticket,name));
|
Object value = momentaryStore.getIfPresent(getSessionKey(sessionId,name));
|
||||||
momentaryStore.invalidate(getKey(ticket,name));
|
momentaryStore.invalidate(getSessionKey(sessionId,name));
|
||||||
|
_logger.trace("key {}, value {}",getSessionKey(sessionId , name),value);
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object get(String ticket , String name) {
|
public Object get(String sessionId , String name) {
|
||||||
return momentaryStore.getIfPresent(getKey(ticket,name));
|
_logger.trace("key {}",getSessionKey(sessionId , name));
|
||||||
|
return momentaryStore.getIfPresent(getSessionKey(sessionId,name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private String getKey(String ticket , String name) {
|
private String getSessionKey(String sessionId , String name) {
|
||||||
return ticket +"_"+ name;
|
return sessionId + "_" + name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,10 +19,10 @@ package org.maxkey.persistence;
|
|||||||
|
|
||||||
public interface MomentaryService {
|
public interface MomentaryService {
|
||||||
|
|
||||||
public void put(String ticket , String name, Object value);
|
public void put(String sessionId , String name, Object value);
|
||||||
|
|
||||||
public Object get(String ticket , String name);
|
public Object get(String sessionId , String name);
|
||||||
|
|
||||||
public Object remove(String ticket , String name);
|
public Object remove(String sessionId , String name);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -52,32 +52,35 @@ public class RedisMomentaryService implements MomentaryService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void put(String ticket , String name, Object value){
|
public void put(String sessionId , String name, Object value){
|
||||||
RedisConnection conn = connectionFactory.getConnection();
|
RedisConnection conn = connectionFactory.getConnection();
|
||||||
conn.setexObject(getKey(ticket , name), validitySeconds, value);
|
conn.setexObject(getSessionKey(sessionId , name), validitySeconds, value);
|
||||||
|
_logger.trace("key {}, validitySeconds {}, value {}",getSessionKey(sessionId , name),validitySeconds,value);
|
||||||
conn.close();
|
conn.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object get(String ticket , String name) {
|
public Object get(String sessionId , String name) {
|
||||||
RedisConnection conn = connectionFactory.getConnection();
|
RedisConnection conn = connectionFactory.getConnection();
|
||||||
Object value = conn.getObject(getKey(ticket , name));
|
Object value = conn.getObject(getSessionKey(sessionId , name));
|
||||||
|
_logger.trace("key {}, value {}",getSessionKey(sessionId , name),value);
|
||||||
conn.close();
|
conn.close();
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object remove(String ticket, String name) {
|
public Object remove(String sessionId, String name) {
|
||||||
RedisConnection conn = connectionFactory.getConnection();
|
RedisConnection conn = connectionFactory.getConnection();
|
||||||
Object value = conn.getObject(getKey(ticket , name));
|
Object value = conn.getObject(getSessionKey(sessionId , name));
|
||||||
conn.delete(getKey(ticket , name));
|
conn.delete(getSessionKey(sessionId , name));
|
||||||
conn.close();
|
conn.close();
|
||||||
|
_logger.trace("key {}, value {}",getSessionKey(sessionId , name),value);
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private String getKey(String ticket , String name) {
|
private String getSessionKey(String sessionId , String name) {
|
||||||
return PREFIX + ticket + name;
|
return PREFIX + sessionId + name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -41,7 +41,7 @@ public class SessionListenerJob extends AbstractScheduleJob implements Job , S
|
|||||||
jobStatus = JOBSTATUS.RUNNING;
|
jobStatus = JOBSTATUS.RUNNING;
|
||||||
try {
|
try {
|
||||||
if(sessionService != null) {
|
if(sessionService != null) {
|
||||||
for (HistoryLogin onlineSession : sessionService.queryOnlineTicket()) {
|
for (HistoryLogin onlineSession : sessionService.querySessions()) {
|
||||||
if(sessionService.get(onlineSession.getSessionId()) == null) {
|
if(sessionService.get(onlineSession.getSessionId()) == null) {
|
||||||
sessionService.terminate(
|
sessionService.terminate(
|
||||||
onlineSession.getSessionId(),
|
onlineSession.getSessionId(),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user