v1.3 RC
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<String, RemeberMe> 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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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<RemeberMe> listRemeberMe=jdbcTemplate.query(DEFAULT_DEFAULT_SELECT_STATEMENT, new RowMapper<RemeberMe>() {
|
||||
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<RemeberMe> listRemeberMe = jdbcTemplate.query(DEFAULT_DEFAULT_SELECT_STATEMENT,
|
||||
new RowMapper<RemeberMe>() {
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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
|
||||
+ "]";
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user