From 922106408873c75c1360fc29e3c46223995b8ebd Mon Sep 17 00:00:00 2001 From: MaxKey Date: Tue, 26 Apr 2022 18:29:58 +0800 Subject: [PATCH] Sessions --- .../authn/session/AbstractSessionService.java | 16 +++++++------- .../authn/session/RedisSessionService.java | 20 +++++++++--------- .../maxkey/authn/session/SessionService.java | 14 ++++++------- .../persistence/InMemoryMomentaryService.java | 21 +++++++++++-------- .../maxkey/persistence/MomentaryService.java | 6 +++--- .../persistence/RedisMomentaryService.java | 21 +++++++++++-------- .../org/maxkey/jobs/SessionListenerJob.java | 2 +- 7 files changed, 53 insertions(+), 47 deletions(-) diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/AbstractSessionService.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/AbstractSessionService.java index 88619acc7..ea7c70f00 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/AbstractSessionService.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/AbstractSessionService.java @@ -47,11 +47,11 @@ public class AbstractSessionService implements SessionService{ "update mxk_history_login set logouttime = ? ,sessionstatus = 7 where sessionid = ?"; @Override - public List queryOnlineTicket() { - List listOnlineTicket = jdbcTemplate.query( + public List querySessions() { + List listSessions = jdbcTemplate.query( DEFAULT_DEFAULT_SELECT_STATEMENT, new OnlineTicketRowMapper()); - return listOnlineTicket; + return listSessions; } public void profileLastLogoffTime(String userId,String lastLogoffTime) { @@ -93,27 +93,27 @@ public class AbstractSessionService implements SessionService{ } @Override - public void store(String ticketId, Session ticket) { + public void store(String sessionId, Session session) { } @Override - public Session remove(String ticket) { + public Session remove(String sessionId) { return null; } @Override - public Session get(String ticketId) { + public Session get(String sessionId) { return null; } @Override - public void refresh(String ticketId, LocalTime refreshTime) { + public void refresh(String sessionId, LocalTime refreshTime) { } @Override - public void refresh(String ticketId) { + public void refresh(String sessionId) { } diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/RedisSessionService.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/RedisSessionService.java index dc871e86f..0b12fa6ef 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/RedisSessionService.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/RedisSessionService.java @@ -58,25 +58,25 @@ public class RedisSessionService extends AbstractSessionService { } @Override - public void store(String ticketId, Session ticket) { + public void store(String sessionId, Session ticket) { RedisConnection conn=connectionFactory.getConnection(); - conn.setexObject(PREFIX+ticketId, serviceTicketValiditySeconds, ticket); + conn.setexObject(PREFIX+sessionId, serviceTicketValiditySeconds, ticket); conn.close(); } @Override - public Session remove(String ticketId) { + public Session remove(String sessionId) { RedisConnection conn=connectionFactory.getConnection(); - Session ticket = conn.getObject(PREFIX+ticketId); - conn.delete(PREFIX+ticketId); + Session ticket = conn.getObject(PREFIX+sessionId); + conn.delete(PREFIX+sessionId); conn.close(); return ticket; } @Override - public Session get(String ticketId) { + public Session get(String sessionId) { RedisConnection conn=connectionFactory.getConnection(); - Session session = conn.getObject(PREFIX+ticketId); + Session session = conn.getObject(PREFIX+sessionId); conn.close(); return session; } @@ -95,8 +95,8 @@ public class RedisSessionService extends AbstractSessionService { } @Override - public void refresh(String ticketId) { - Session session = get(ticketId); + public void refresh(String sessionId) { + Session session = get(sessionId); LocalTime currentTime = LocalTime.now(); Duration duration = Duration.between(currentTime, session.getLastAccessTime()); @@ -105,7 +105,7 @@ public class RedisSessionService extends AbstractSessionService { if(duration.getSeconds() > Session.MAX_EXPIRY_DURATION) { session.setLastAccessTime(currentTime); - refresh(ticketId,currentTime); + refresh(sessionId,currentTime); } } diff --git a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionService.java b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionService.java index e988bb06a..b82fbaf49 100644 --- a/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionService.java +++ b/maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/session/SessionService.java @@ -24,19 +24,19 @@ import org.maxkey.entity.HistoryLogin; 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 List queryOnlineTicket(); + public List querySessions(); - public void terminate(String onlineTicket,String userId,String username); + public void terminate(String sessionId,String userId,String username); } diff --git a/maxkey-core/src/main/java/org/maxkey/persistence/InMemoryMomentaryService.java b/maxkey-core/src/main/java/org/maxkey/persistence/InMemoryMomentaryService.java index 99f25cb46..4abfea045 100644 --- a/maxkey-core/src/main/java/org/maxkey/persistence/InMemoryMomentaryService.java +++ b/maxkey-core/src/main/java/org/maxkey/persistence/InMemoryMomentaryService.java @@ -39,24 +39,27 @@ public class InMemoryMomentaryService implements MomentaryService{ } @Override - public void put(String ticket , String name, Object value){ - momentaryStore.put(getKey(ticket,name), value); + public void put(String sessionId , String name, Object value){ + _logger.trace("key {}, value {}",getSessionKey(sessionId , name),value); + momentaryStore.put(getSessionKey(sessionId,name), value); } @Override - public Object remove(String ticket , String name) { - Object value = momentaryStore.getIfPresent(getKey(ticket,name)); - momentaryStore.invalidate(getKey(ticket,name)); + public Object remove(String sessionId , String name) { + Object value = momentaryStore.getIfPresent(getSessionKey(sessionId,name)); + momentaryStore.invalidate(getSessionKey(sessionId,name)); + _logger.trace("key {}, value {}",getSessionKey(sessionId , name),value); return value; } @Override - public Object get(String ticket , String name) { - return momentaryStore.getIfPresent(getKey(ticket,name)); + public Object get(String sessionId , String name) { + _logger.trace("key {}",getSessionKey(sessionId , name)); + return momentaryStore.getIfPresent(getSessionKey(sessionId,name)); } - private String getKey(String ticket , String name) { - return ticket +"_"+ name; + private String getSessionKey(String sessionId , String name) { + return sessionId + "_" + name; } } diff --git a/maxkey-core/src/main/java/org/maxkey/persistence/MomentaryService.java b/maxkey-core/src/main/java/org/maxkey/persistence/MomentaryService.java index e77fe649f..41cdc52f8 100644 --- a/maxkey-core/src/main/java/org/maxkey/persistence/MomentaryService.java +++ b/maxkey-core/src/main/java/org/maxkey/persistence/MomentaryService.java @@ -19,10 +19,10 @@ package org.maxkey.persistence; 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); } diff --git a/maxkey-core/src/main/java/org/maxkey/persistence/RedisMomentaryService.java b/maxkey-core/src/main/java/org/maxkey/persistence/RedisMomentaryService.java index 48a5c7493..3fc72cad1 100644 --- a/maxkey-core/src/main/java/org/maxkey/persistence/RedisMomentaryService.java +++ b/maxkey-core/src/main/java/org/maxkey/persistence/RedisMomentaryService.java @@ -52,32 +52,35 @@ public class RedisMomentaryService implements MomentaryService { } @Override - public void put(String ticket , String name, Object value){ + public void put(String sessionId , String name, Object value){ 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(); } @Override - public Object get(String ticket , String name) { + public Object get(String sessionId , String name) { 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(); return value; } @Override - public Object remove(String ticket, String name) { + public Object remove(String sessionId, String name) { RedisConnection conn = connectionFactory.getConnection(); - Object value = conn.getObject(getKey(ticket , name)); - conn.delete(getKey(ticket , name)); + Object value = conn.getObject(getSessionKey(sessionId , name)); + conn.delete(getSessionKey(sessionId , name)); conn.close(); + _logger.trace("key {}, value {}",getSessionKey(sessionId , name),value); return value; } - private String getKey(String ticket , String name) { - return PREFIX + ticket + name; + private String getSessionKey(String sessionId , String name) { + return PREFIX + sessionId + name; } diff --git a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/jobs/SessionListenerJob.java b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/jobs/SessionListenerJob.java index 8cce0004d..c143fd3b3 100644 --- a/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/jobs/SessionListenerJob.java +++ b/maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/jobs/SessionListenerJob.java @@ -41,7 +41,7 @@ public class SessionListenerJob extends AbstractScheduleJob implements Job , S jobStatus = JOBSTATUS.RUNNING; try { if(sessionService != null) { - for (HistoryLogin onlineSession : sessionService.queryOnlineTicket()) { + for (HistoryLogin onlineSession : sessionService.querySessions()) { if(sessionService.get(onlineSession.getSessionId()) == null) { sessionService.terminate( onlineSession.getSessionId(),