All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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