(十三)app_key和secret存放在数据库或redis中

这里以redis为例

新建一个RedisAppSecretManager类实现AppSecretManager接口

/**
 * 使用方式:
 * 
 * <pre>
@Autowired
private AppSecretManager appSecretManager;

@Override
protected void initApiConfig(ApiConfig apiConfig) {
    ...
    apiConfig.setAppSecretManager(appSecretManager);
    ...
}   

 * </pre>
 * 
 * @author tanghc
 *
 */
@Component
public class RedisAppSecretManager implements AppSecretManager {

    public static String APP_KEY_PREFIX = "easyopen_app_key:";

    @Autowired
    private StringRedisTemplate stringRedisTemplate;


    @Override
    public void addAppSecret(Map<String, String> appSecretStore) {
        stringRedisTemplate.opsForHash().putAll(APP_KEY_PREFIX, appSecretStore);
    }

    @Override
    public String getSecret(String appKey) {
        return (String)stringRedisTemplate.opsForHash().get(APP_KEY_PREFIX, appKey);
    }

    @Override
    public boolean isValidAppKey(String appKey) {
        if (appKey == null) {
            return false;
        }
        return getSecret(appKey) != null;
    }

}

存放app_key和secret采用hash set的方式,这样在redis中查看会比较方便,一目了然.

然后在IndexController中:

@Autowired
private AppSecretManager appSecretManager;

@Override
protected void initApiConfig(ApiConfig apiConfig) {
    ...
    apiConfig.setAppSecretManager(appSecretManager);
    ...
}   

猜你喜欢

转载自blog.csdn.net/thc1987/article/details/80091007