目录

有时候要想重生,得先打骨折

目录

我的博客权限管理因为之前用的是shiro-redis项目,封装度太高,现在想自己diy一些东西都很难,于是我决定把权限验证系统推倒重来,开干吧。。。

弄好了回来写总结~


2021.3.14 00:41更新 (提示:这天做的优化直接后面被推翻了)

果然remake可以获得重生~

说一说我昨天做了什么吧,首先我把shiro-redis包给撤了,换上了shiro和jedis。shiro的拦截器会拦截每一条请求,如果请求头中含有token,就进行验证。这里我利用redis做了优化,在每次向mysql查询用户信息的之后,将这个用户对象存入redis中,设置1个小时的过期时间。如果不这样做,用户登录之后每个操作都会去查一次mysql,相对来说开销比较大。

怎么把对象保存到redis中呢?我使用了Jackson来做转化,下面po一下我封装的工具类。

@Slf4j
public class JsonUtils {
    //Object to String
    public static <T> String objectToString(T object){
        ObjectMapper objectMapper = new ObjectMapper();
        String s = null;
        try {
            s = objectMapper.writeValueAsString(object);
        } catch (JsonProcessingException e) {
            log.error("Object转化为String失败 ======> {}", e.getMessage());
        }
        return s;
    }

    //String to Object
    public static <T> T strToObject(String str, Class<T> valueType){
        ObjectMapper objectMapper = new ObjectMapper();
        T object = null;
        try {
            object = objectMapper.readValue(str, valueType);
        } catch (JsonProcessingException e) {
            log.error("String转化为Object失败 ======> {}", e.getMessage());
        }
        return object;
    }
}

2021.3.14 22:25更新

好家伙,既然使用了jwt为啥还要每次验证身份都查数据库啊!直接把权限信息都放进jwt里面不就好了吗。。。

所以前面那个不知道在干什么。。。我直接推翻了。。。

还是得多想想再做啊~