
com.luues.security.configuration.rememberme.PersistentTokenRepository Maven / Gradle / Ivy
package com.luues.security.configuration.rememberme;
import cn.luues.tool.json.JsonUtils;
import com.luues.redis.single.service.JedisTemplate;
import com.luues.security.configuration.properties.SecurityJwtProperties;
import com.luues.security.configuration.properties.SecurityTokenPropertoes;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.security.web.authentication.rememberme.PersistentRememberMeToken;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.concurrent.TimeUnit;
/**
* 记住我功能
*/
@Component
public class PersistentTokenRepository implements org.springframework.security.web.authentication.rememberme.PersistentTokenRepository {
@Autowired
private JedisTemplate jedisTemplate;
@Autowired
private SecurityJwtProperties securityJwtProperties;
@Autowired
private SecurityTokenPropertoes securityTokenPropertoes;
@Override
public void createNewToken(PersistentRememberMeToken persistentRememberMeToken) {
PersistentRememberMeToken current = getTokenForSeries(persistentRememberMeToken.getSeries());
if (current != null) {
throw new DataIntegrityViolationException("Series Id '" + persistentRememberMeToken.getSeries()
+ "' already exists!");
}
set(persistentRememberMeToken);
}
@Override
public void updateToken(String s, String s1, Date date) {
PersistentRememberMeToken token = getTokenForSeries(s);
PersistentRememberMeToken newToken = new PersistentRememberMeToken(
token.getUsername(),
token.getSeries(),
s1, new Date());
set(newToken);
}
@Override
public PersistentRememberMeToken getTokenForSeries(String s) {
String data = jedisTemplate.get(securityTokenPropertoes.getRedisPrefix().concat("series:").concat(s));
if(null == data)
return null;
com.luues.security.core.entity.PersistentRememberMeToken persistentRememberMeToken = JsonUtils.parse(JsonUtils.toJson(data), com.luues.security.core.entity.PersistentRememberMeToken.class);
return persistentRememberMeToken.to();
}
@Override
public void removeUserTokens(String s) {
PersistentRememberMeToken persistentRememberMeToken = JsonUtils.parse(JsonUtils.toJson(jedisTemplate.get(securityTokenPropertoes.getRedisPrefix().concat("username:").concat(s))), PersistentRememberMeToken.class);
jedisTemplate.del(securityTokenPropertoes.getRedisPrefix().concat("username:").concat(persistentRememberMeToken.getUsername()));
jedisTemplate.del(securityTokenPropertoes.getRedisPrefix().concat("series:").concat(persistentRememberMeToken.getSeries()));
}
protected void set(PersistentRememberMeToken persistentRememberMeToken){
com.luues.security.core.entity.PersistentRememberMeToken persistentRememberMeToken1 = new com.luues.security.core.entity.PersistentRememberMeToken(persistentRememberMeToken);
jedisTemplate.setex(
securityTokenPropertoes.getRedisPrefix().concat("username:").concat(persistentRememberMeToken1.getUsername()),
JsonUtils.toJson(persistentRememberMeToken1), 30, TimeUnit.DAYS);
jedisTemplate.setex(
securityTokenPropertoes.getRedisPrefix().concat("series:").concat(persistentRememberMeToken1.getSeries()),
JsonUtils.toJson(persistentRememberMeToken1), 30, TimeUnit.DAYS);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy