From 65deab6676dc4e61e7b2848a4e37225bfe50c90d Mon Sep 17 00:00:00 2001 From: shimingxy Date: Wed, 1 Apr 2020 15:30:34 +0800 Subject: [PATCH] v1.3 RC --- .../rememberme/AbstractRemeberMeService.java | 299 +++++++++--------- .../rememberme/InMemoryRemeberMeService.java | 39 +++ .../rememberme/JdbcRemeberMeService.java | 102 +++--- .../rememberme/RedisRemeberMeService.java | 43 +++ .../authn/support/rememberme/RemeberMe.java | 92 +++--- .../main/resources/spring/maxkey-security.xml | 6 +- 6 files changed, 337 insertions(+), 244 deletions(-) create mode 100644 maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/InMemoryRemeberMeService.java create mode 100644 maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/RedisRemeberMeService.java diff --git a/maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/AbstractRemeberMeService.java b/maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/AbstractRemeberMeService.java index 832047dd..affb47a1 100644 --- a/maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/AbstractRemeberMeService.java +++ b/maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/AbstractRemeberMeService.java @@ -2,11 +2,9 @@ package org.maxkey.authn.support.rememberme; import java.util.Date; import java.util.regex.Pattern; - import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - import org.joda.time.DateTime; import org.maxkey.config.ApplicationConfig; import org.maxkey.constants.LOGINTYPE; @@ -20,160 +18,157 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; -public abstract class AbstractRemeberMeService { - private static final Logger _logger = LoggerFactory.getLogger(AbstractRemeberMeService.class); - - protected Integer remeberMeValidity=RemeberMe.TWO_WEEK; - - protected String validity; +public abstract class AbstractRemeberMeService { + private static final Logger _logger = LoggerFactory.getLogger(AbstractRemeberMeService.class); - @Autowired - @Qualifier("applicationConfig") - protected ApplicationConfig applicationConfig; - - //follow function is for persist - public abstract void save(RemeberMe remeberMe) ; - - public abstract void update(RemeberMe remeberMe) ; - - public abstract RemeberMe read(RemeberMe remeberMe) ; - - public abstract void remove(String username); - //end persist - - public boolean createRemeberMe(String username,HttpServletRequest request, HttpServletResponse response){ - if(request.getSession().getAttribute(WebConstants.REMEBER_ME_SESSION)!=null&&applicationConfig.getLoginConfig().isRemeberMe()){ - _logger.debug("Remeber Me ..."); - RemeberMe remeberMe=new RemeberMe(); - remeberMe.setAuthKey(WebContext.genId()); - remeberMe.setId(WebContext.genId()); - remeberMe.setUsername(WebContext.getUserInfo().getUsername()); - remeberMe.setLastLogin(new Date()); - save(remeberMe); - _logger.debug("Remeber Me "+remeberMe); - _logger.debug("Cookie Name : "+WebConstants.REMEBER_ME_COOKIE); - - - String jsonRemeberMe=JsonUtils.object2Json(remeberMe); - _logger.debug("Remeber Me JSON "+jsonRemeberMe); - - jsonRemeberMe=ReciprocalUtils.encode(jsonRemeberMe); - - String cookieValue = Base64Utils.base64UrlEncode(jsonRemeberMe.getBytes()); - - _logger.debug("Remeber Me JSON "+cookieValue); - Cookie cookie= new Cookie(WebConstants.REMEBER_ME_COOKIE,cookieValue); - - Integer maxAge=getRemeberMeValidity(); - _logger.debug("Cookie Max Age :"+maxAge+" seconds."); - cookie.setMaxAge(maxAge); - - //cookie.setPath("/"); - cookie.setDomain(applicationConfig.getDomainName()); - response.addCookie(cookie); - request.getSession().removeAttribute(WebConstants.REMEBER_ME_SESSION); - } - return true; - } - - - public boolean login(String remeberMe, HttpServletResponse response){ - _logger.debug("RemeberMe : "+remeberMe); + protected Integer remeberMeValidity = RemeberMe.TWO_WEEK; - remeberMe=new String(Base64Utils.base64UrlDecode(remeberMe)); - - remeberMe=ReciprocalUtils.decoder(remeberMe); - - _logger.debug("decoder RemeberMe : "+remeberMe); - RemeberMe remeberMeCookie=new RemeberMe(); - remeberMeCookie=(RemeberMe)JsonUtils.json2Object(remeberMe, remeberMeCookie); - _logger.debug("Remeber Me Cookie : "+remeberMeCookie); - - RemeberMe jdbcRemeberMe=read(remeberMeCookie); - DateTime loginDate=new DateTime(jdbcRemeberMe.getLastLogin()); - DateTime expiryDate = loginDate.plusSeconds(getRemeberMeValidity()); - DateTime now = new DateTime(); - if(now.isBefore(expiryDate)){ - if(WebContext.setAuthentication(jdbcRemeberMe.getUsername(),LOGINTYPE.REMEBER_ME,"","","success")){ - return updateRemeberMe(remeberMeCookie,response); - } - } - return false; - } - - - public boolean updateRemeberMe(RemeberMe remeberMe,HttpServletResponse response){ - remeberMe.setAuthKey(WebContext.genId()); - remeberMe.setLastLogin(new Date()); - update(remeberMe); - _logger.debug("update Remeber Me "+remeberMe); - _logger.debug("Cookie Name : "+WebConstants.REMEBER_ME_COOKIE); - - - String jsonRemeberMe=JsonUtils.object2Json(remeberMe); - _logger.debug("Remeber Me JSON "+jsonRemeberMe); + protected String validity; - _logger.debug("Encode Remeber Me JSON ..."); - jsonRemeberMe=ReciprocalUtils.encode(jsonRemeberMe); - _logger.debug("Encode Remeber Me JSON "+ jsonRemeberMe); - - String cookieValue = Base64Utils.base64UrlEncode(jsonRemeberMe.getBytes()); - - Cookie cookie= new Cookie(WebConstants.REMEBER_ME_COOKIE,cookieValue); - - Integer maxAge=getRemeberMeValidity(); - _logger.debug("Cookie Max Age :"+maxAge+" seconds."); - cookie.setMaxAge(maxAge); - - //cookie.setPath("/"); - cookie.setDomain(applicationConfig.getDomainName()); - response.addCookie(cookie); - return true; - } - - public boolean removeRemeberMe(HttpServletResponse response){ - Cookie cookie= new Cookie(WebConstants.REMEBER_ME_COOKIE,null); - cookie.setMaxAge(0); - - cookie.setDomain(applicationConfig.getDomainName()); - response.addCookie(cookie); - - remove(WebContext.getUserInfo().getUsername()); - - return true; - } - - public Integer getRemeberMeValidity() { - return remeberMeValidity; - } + @Autowired + @Qualifier("applicationConfig") + protected ApplicationConfig applicationConfig; - public void setRemeberMeValidity(Integer remeberMeValidity) { - this.remeberMeValidity = remeberMeValidity; - } + // follow function is for persist + public abstract void save(RemeberMe remeberMe); - public String getValidity() { - return validity; - } - - public void setApplicationConfig(ApplicationConfig applicationConfig) { - this.applicationConfig = applicationConfig; - } + public abstract void update(RemeberMe remeberMe); - public void setValidity(String validity) { - _logger.debug("validity : "+validity); - this.validity = validity; - if(Pattern.matches("[0-9]+", validity)){ - remeberMeValidity=Integer.parseInt(validity); - }else if(validity.equalsIgnoreCase("ONE_DAY")){ - remeberMeValidity=RemeberMe.ONE_DAY; - }else if(validity.equalsIgnoreCase("ONE_WEEK")){ - remeberMeValidity=RemeberMe.ONE_WEEK; - }else if(validity.equalsIgnoreCase("TWO_WEEK")){ - remeberMeValidity=RemeberMe.TWO_WEEK; - }else if(validity.equalsIgnoreCase("ONE_YEAR")){ - remeberMeValidity=RemeberMe.ONE_YEAR; - } - - _logger.debug("Remeber Me Validity : "+remeberMeValidity); - } + public abstract RemeberMe read(RemeberMe remeberMe); + + public abstract void remove(String username); + // end persist + + public boolean createRemeberMe(String username, HttpServletRequest request, HttpServletResponse response) { + if (request.getSession().getAttribute(WebConstants.REMEBER_ME_SESSION) != null + && applicationConfig.getLoginConfig().isRemeberMe()) { + _logger.debug("Remeber Me ..."); + RemeberMe remeberMe = new RemeberMe(); + remeberMe.setAuthKey(WebContext.genId()); + remeberMe.setId(WebContext.genId()); + remeberMe.setUsername(WebContext.getUserInfo().getUsername()); + remeberMe.setLastLogin(new Date()); + save(remeberMe); + _logger.debug("Remeber Me " + remeberMe); + _logger.debug("Cookie Name : " + WebConstants.REMEBER_ME_COOKIE); + + String jsonRemeberMe = JsonUtils.object2Json(remeberMe); + _logger.debug("Remeber Me JSON " + jsonRemeberMe); + + jsonRemeberMe = ReciprocalUtils.encode(jsonRemeberMe); + + String cookieValue = Base64Utils.base64UrlEncode(jsonRemeberMe.getBytes()); + + _logger.debug("Remeber Me JSON " + cookieValue); + Cookie cookie = new Cookie(WebConstants.REMEBER_ME_COOKIE, cookieValue); + + Integer maxAge = getRemeberMeValidity(); + _logger.debug("Cookie Max Age :" + maxAge + " seconds."); + cookie.setMaxAge(maxAge); + + // cookie.setPath("/"); + cookie.setDomain(applicationConfig.getDomainName()); + response.addCookie(cookie); + request.getSession().removeAttribute(WebConstants.REMEBER_ME_SESSION); + } + return true; + } + + public boolean login(String remeberMe, HttpServletResponse response) { + _logger.debug("RemeberMe : " + remeberMe); + + remeberMe = new String(Base64Utils.base64UrlDecode(remeberMe)); + + remeberMe = ReciprocalUtils.decoder(remeberMe); + + _logger.debug("decoder RemeberMe : " + remeberMe); + RemeberMe remeberMeCookie = new RemeberMe(); + remeberMeCookie = (RemeberMe) JsonUtils.json2Object(remeberMe, remeberMeCookie); + _logger.debug("Remeber Me Cookie : " + remeberMeCookie); + + RemeberMe jdbcRemeberMe = read(remeberMeCookie); + DateTime loginDate = new DateTime(jdbcRemeberMe.getLastLogin()); + DateTime expiryDate = loginDate.plusSeconds(getRemeberMeValidity()); + DateTime now = new DateTime(); + if (now.isBefore(expiryDate)) { + if (WebContext.setAuthentication(jdbcRemeberMe.getUsername(), LOGINTYPE.REMEBER_ME, "", "", "success")) { + return updateRemeberMe(remeberMeCookie, response); + } + } + return false; + } + + public boolean updateRemeberMe(RemeberMe remeberMe, HttpServletResponse response) { + remeberMe.setAuthKey(WebContext.genId()); + remeberMe.setLastLogin(new Date()); + update(remeberMe); + _logger.debug("update Remeber Me " + remeberMe); + _logger.debug("Cookie Name : " + WebConstants.REMEBER_ME_COOKIE); + + String jsonRemeberMe = JsonUtils.object2Json(remeberMe); + _logger.debug("Remeber Me JSON " + jsonRemeberMe); + + _logger.debug("Encode Remeber Me JSON ..."); + jsonRemeberMe = ReciprocalUtils.encode(jsonRemeberMe); + _logger.debug("Encode Remeber Me JSON " + jsonRemeberMe); + + String cookieValue = Base64Utils.base64UrlEncode(jsonRemeberMe.getBytes()); + + Cookie cookie = new Cookie(WebConstants.REMEBER_ME_COOKIE, cookieValue); + + Integer maxAge = getRemeberMeValidity(); + _logger.debug("Cookie Max Age :" + maxAge + " seconds."); + cookie.setMaxAge(maxAge); + + // cookie.setPath("/"); + cookie.setDomain(applicationConfig.getDomainName()); + response.addCookie(cookie); + return true; + } + + public boolean removeRemeberMe(HttpServletResponse response) { + Cookie cookie = new Cookie(WebConstants.REMEBER_ME_COOKIE, null); + cookie.setMaxAge(0); + + cookie.setDomain(applicationConfig.getDomainName()); + response.addCookie(cookie); + + remove(WebContext.getUserInfo().getUsername()); + + return true; + } + + public Integer getRemeberMeValidity() { + return remeberMeValidity; + } + + public void setRemeberMeValidity(Integer remeberMeValidity) { + this.remeberMeValidity = remeberMeValidity; + } + + public String getValidity() { + return validity; + } + + public void setApplicationConfig(ApplicationConfig applicationConfig) { + this.applicationConfig = applicationConfig; + } + + public void setValidity(String validity) { + _logger.debug("validity : " + validity); + this.validity = validity; + if (Pattern.matches("[0-9]+", validity)) { + remeberMeValidity = Integer.parseInt(validity); + } else if (validity.equalsIgnoreCase("ONE_DAY")) { + remeberMeValidity = RemeberMe.ONE_DAY; + } else if (validity.equalsIgnoreCase("ONE_WEEK")) { + remeberMeValidity = RemeberMe.ONE_WEEK; + } else if (validity.equalsIgnoreCase("TWO_WEEK")) { + remeberMeValidity = RemeberMe.TWO_WEEK; + } else if (validity.equalsIgnoreCase("ONE_YEAR")) { + remeberMeValidity = RemeberMe.ONE_YEAR; + } + + _logger.debug("Remeber Me Validity : " + remeberMeValidity); + } } diff --git a/maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/InMemoryRemeberMeService.java b/maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/InMemoryRemeberMeService.java new file mode 100644 index 00000000..2baa9fa5 --- /dev/null +++ b/maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/InMemoryRemeberMeService.java @@ -0,0 +1,39 @@ +package org.maxkey.authn.support.rememberme; + +import java.time.Duration; +import org.ehcache.UserManagedCache; +import org.ehcache.config.builders.ExpiryPolicyBuilder; +import org.ehcache.config.builders.UserManagedCacheBuilder; + +public class InMemoryRemeberMeService extends AbstractRemeberMeService { + + protected static final UserManagedCache remeberMeStore = + UserManagedCacheBuilder.newUserManagedCacheBuilder(String.class, RemeberMe.class) + .withExpiry( + ExpiryPolicyBuilder.timeToLiveExpiration( + Duration.ofMinutes(RemeberMe.TWO_WEEK) + ) + ) + .build(true); + + @Override + public void save(RemeberMe remeberMe) { + remeberMeStore.put(remeberMe.getUsername(), remeberMe); + } + + @Override + public void update(RemeberMe remeberMe) { + remeberMeStore.put(remeberMe.getUsername(), remeberMe); + } + + @Override + public RemeberMe read(RemeberMe remeberMe) { + return remeberMeStore.get(remeberMe.getUsername()); + } + + @Override + public void remove(String username) { + remeberMeStore.remove(username); + } + +} diff --git a/maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/JdbcRemeberMeService.java b/maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/JdbcRemeberMeService.java index 311b9775..bdd4f312 100644 --- a/maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/JdbcRemeberMeService.java +++ b/maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/JdbcRemeberMeService.java @@ -4,65 +4,71 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; import java.util.List; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; +public class JdbcRemeberMeService extends AbstractRemeberMeService { + private static final Logger _logger = LoggerFactory.getLogger(JdbcRemeberMeService.class); -public class JdbcRemeberMeService extends AbstractRemeberMeService{ - private static final Logger _logger = LoggerFactory.getLogger(JdbcRemeberMeService.class); - - private static final String DEFAULT_DEFAULT_INSERT_STATEMENT = "INSERT INTO REMEMBER_ME(ID, USERNAME,AUTHKEY,LASTLOGIN)VALUES( ? , ? , ? , ?)"; - - private static final String DEFAULT_DEFAULT_SELECT_STATEMENT = "SELECT ID, USERNAME,AUTHKEY,LASTLOGIN FROM REMEMBER_ME WHERE ID = ? AND USERNAME = ? AND AUTHKEY = ?"; - - private static final String DEFAULT_DEFAULT_DELETE_STATEMENT = "DELETE FROM REMEMBER_ME WHERE USERNAME = ?"; - - private static final String DEFAULT_DEFAULT_UPDATE_STATEMENT= "UPDATE REMEMBER_ME SET AUTHKEY = ? , LASTLOGIN = ? WHERE ID = ?"; + private static final String DEFAULT_DEFAULT_INSERT_STATEMENT = + "INSERT INTO REMEMBER_ME(ID, USERNAME,AUTHKEY,LASTLOGIN)VALUES( ? , ? , ? , ?)"; - private final JdbcTemplate jdbcTemplate; - + private static final String DEFAULT_DEFAULT_SELECT_STATEMENT = + "SELECT ID, USERNAME,AUTHKEY,LASTLOGIN FROM REMEMBER_ME " + + " WHERE ID = ? AND USERNAME = ? AND AUTHKEY = ?"; - - public JdbcRemeberMeService(JdbcTemplate jdbcTemplate) { - this.jdbcTemplate = jdbcTemplate; - } + private static final String DEFAULT_DEFAULT_DELETE_STATEMENT = + "DELETE FROM REMEMBER_ME WHERE USERNAME = ?"; - @Override - public void save(RemeberMe remeberMe) { - jdbcTemplate.update(DEFAULT_DEFAULT_INSERT_STATEMENT, - new Object[] { remeberMe.getId(),remeberMe.getUsername(),remeberMe.getAuthKey(),remeberMe.getLastLogin() }, - new int[] {Types.VARCHAR, Types.VARCHAR,Types.VARCHAR,Types.TIMESTAMP }); - - } + private static final String DEFAULT_DEFAULT_UPDATE_STATEMENT = + "UPDATE REMEMBER_ME SET AUTHKEY = ? , LASTLOGIN = ? WHERE ID = ?"; - @Override - public void update(RemeberMe remeberMe) { - jdbcTemplate.update(DEFAULT_DEFAULT_UPDATE_STATEMENT, new Object[] {remeberMe.getAuthKey(),remeberMe.getLastLogin(),remeberMe.getId()}); - - } + private final JdbcTemplate jdbcTemplate; - @Override - public RemeberMe read(RemeberMe remeberMe) { - List listRemeberMe=jdbcTemplate.query(DEFAULT_DEFAULT_SELECT_STATEMENT, new RowMapper() { - public RemeberMe mapRow(ResultSet rs, int rowNum) throws SQLException { - RemeberMe remeberMe=new RemeberMe(); - remeberMe.setId(rs.getString(1)); - remeberMe.setUsername(rs.getString(2)); - remeberMe.setAuthKey(rs.getString(3)); - remeberMe.setLastLogin(rs.getDate(4)); - return remeberMe; - } - },remeberMe.getId(),remeberMe.getUsername(),remeberMe.getAuthKey()); - _logger.debug("listRemeberMe "+listRemeberMe); - return (listRemeberMe.size()>0)?listRemeberMe.get(0):null; - } + public JdbcRemeberMeService(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } - @Override - public void remove(String username) { - jdbcTemplate.update(DEFAULT_DEFAULT_DELETE_STATEMENT, username); - } + @Override + public void save(RemeberMe remeberMe) { + jdbcTemplate.update(DEFAULT_DEFAULT_INSERT_STATEMENT, + new Object[] { remeberMe.getId(), remeberMe.getUsername(), remeberMe.getAuthKey(), + remeberMe.getLastLogin() }, + new int[] { Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.TIMESTAMP }); + } + + @Override + public void update(RemeberMe remeberMe) { + jdbcTemplate.update(DEFAULT_DEFAULT_UPDATE_STATEMENT, + new Object[] { + remeberMe.getAuthKey(), + remeberMe.getLastLogin(), + remeberMe.getId() + }); + } + + @Override + public RemeberMe read(RemeberMe remeberMe) { + List listRemeberMe = jdbcTemplate.query(DEFAULT_DEFAULT_SELECT_STATEMENT, + new RowMapper() { + public RemeberMe mapRow(ResultSet rs, int rowNum) throws SQLException { + RemeberMe remeberMe = new RemeberMe(); + remeberMe.setId(rs.getString(1)); + remeberMe.setUsername(rs.getString(2)); + remeberMe.setAuthKey(rs.getString(3)); + remeberMe.setLastLogin(rs.getDate(4)); + return remeberMe; + } + }, remeberMe.getId(), remeberMe.getUsername(), remeberMe.getAuthKey()); + _logger.debug("listRemeberMe " + listRemeberMe); + return (listRemeberMe.size() > 0) ? listRemeberMe.get(0) : null; + } + + @Override + public void remove(String username) { + jdbcTemplate.update(DEFAULT_DEFAULT_DELETE_STATEMENT, username); + } } diff --git a/maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/RedisRemeberMeService.java b/maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/RedisRemeberMeService.java new file mode 100644 index 00000000..890235f0 --- /dev/null +++ b/maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/RedisRemeberMeService.java @@ -0,0 +1,43 @@ +package org.maxkey.authn.support.rememberme; + +import org.maxkey.persistence.redis.RedisConnection; +import org.maxkey.persistence.redis.RedisConnectionFactory; + +public class RedisRemeberMeService extends AbstractRemeberMeService { + + protected int serviceTicketValiditySeconds = RemeberMe.TWO_WEEK; + + RedisConnectionFactory connectionFactory; + + public static String PREFIX = "REDIS_REMEBER_ME_SERVICE_"; + + @Override + public void save(RemeberMe remeberMe) { + RedisConnection conn = connectionFactory.getConnection(); + conn.setexObject(PREFIX + remeberMe.getUsername(), serviceTicketValiditySeconds, remeberMe); + conn.close(); + } + + @Override + public void update(RemeberMe remeberMe) { + RedisConnection conn = connectionFactory.getConnection(); + conn.setexObject(PREFIX + remeberMe.getUsername(), serviceTicketValiditySeconds, remeberMe); + conn.close(); + } + + @Override + public RemeberMe read(RemeberMe remeberMe) { + RedisConnection conn = connectionFactory.getConnection(); + RemeberMe readRemeberMe = (RemeberMe)conn.getObject(PREFIX + remeberMe.getUsername()); + conn.close(); + return readRemeberMe; + } + + @Override + public void remove(String username) { + RedisConnection conn = connectionFactory.getConnection(); + conn.delete(PREFIX + username); + conn.close(); + } + +} diff --git a/maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/RemeberMe.java b/maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/RemeberMe.java index 70203bbb..3949e81e 100644 --- a/maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/RemeberMe.java +++ b/maxkey-core/src/main/java/org/maxkey/authn/support/rememberme/RemeberMe.java @@ -1,64 +1,70 @@ package org.maxkey.authn.support.rememberme; +import java.io.Serializable; import java.util.Date; -public class RemeberMe { - /** +public class RemeberMe implements Serializable { + + private static final long serialVersionUID = 8010496585233991785L; + + /** * The number of seconds in one year (= 60 * 60 * 24 * 365). */ public static final Integer ONE_YEAR = 60 * 60 * 24 * 365; - - public static final Integer ONE_DAY = 60 * 60 * 24; //1 day - - public static final Integer ONE_WEEK = ONE_DAY * 7; //1 week - - public static final Integer TWO_WEEK = ONE_DAY * 14; //2 week - - public static final Integer TWO_MONTH = ONE_DAY * 30; //1 month - + + public static final Integer ONE_DAY = 60 * 60 * 24; // 1 day + + public static final Integer ONE_WEEK = ONE_DAY * 7; // 1 week + + public static final Integer TWO_WEEK = ONE_DAY * 14; // 2 week + + public static final Integer TWO_MONTH = ONE_DAY * 30; // 1 month + String id; - + String username; - + String authKey; - + Date lastLogin; - public String getId() { - return id; - } + public String getId() { + return id; + } - public void setId(String id) { - this.id = id; - } + public void setId(String id) { + this.id = id; + } - public String getUsername() { - return username; - } + public String getUsername() { + return username; + } - public void setUsername(String username) { - this.username = username; - } + public void setUsername(String username) { + this.username = username; + } - public String getAuthKey() { - return authKey; - } + public String getAuthKey() { + return authKey; + } - public void setAuthKey(String authKey) { - this.authKey = authKey; - } + public void setAuthKey(String authKey) { + this.authKey = authKey; + } - public Date getLastLogin() { - return lastLogin; - } + public Date getLastLogin() { + return lastLogin; + } - public void setLastLogin(Date lastLogin) { - this.lastLogin = lastLogin; - } + public void setLastLogin(Date lastLogin) { + this.lastLogin = lastLogin; + } - @Override - public String toString() { - return "RemeberMe [id=" + id + ", username=" + username + ", authKey=" - + authKey + ", lastLogin=" + lastLogin + "]"; - } + @Override + public String toString() { + return "RemeberMe [id=" + id + + ", username=" + username + + ", authKey=" + authKey + ", lastLogin=" + lastLogin + + "]"; + } } diff --git a/maxkey-web-maxkey/src/main/resources/spring/maxkey-security.xml b/maxkey-web-maxkey/src/main/resources/spring/maxkey-security.xml index bb43ccc6..0db61edd 100644 --- a/maxkey-web-maxkey/src/main/resources/spring/maxkey-security.xml +++ b/maxkey-web-maxkey/src/main/resources/spring/maxkey-security.xml @@ -72,10 +72,14 @@ - + + +