3.载荷和结果实体类以及Jwt

1.昨天为了将两个项目推送到远程仓库,了解了一下分支,将一个小工程作为一个分支,这是发生在git add .,git commit -m "描述"以及git reomte add origin HTTP之后的
  1. 获取当前仓库的分支
git branch
  1. 检查分支
git checkout branch
  1. 推送项目文件到分支
git push origin "分支名"
 
2.首先创建了一个test的数据库,然后创建了:sys_user、sys_role、sys_user_role三张表,并插入张表的数据;
 
3.编写了sso-common模块的payload(载荷)和result(结果)实体类;再编写了JsonUtil,JWTUtil以及RsaUtil等工具类
  1. 载荷
@data//get,set
public class Payload<T> implements Serializable{
    private int id;
    private T userInfo;//用户信息
    private Date exppiration;//过期时间
}
  1. result
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Result implements Serializable{
    private Inteher code;
    private String msg;
    private Object data;
}
  1. JsonUtil
public class JsonUtil{
    private static final Logger logger = LoggerFactory.getLogger(JsonUtil.class);
    private static final ObjectMapper mapper = new ObjectMapper();
    //将指定对象序列化为一个Json字符串
    public static String toString(Object obj){
        if(obj == null){
            return null;
        }
        if(obj.getClass() == String.class){
            return (String)obj;
        }
        try{
            return mapper.writeValueAsString(obj);//将obj序列化为JSON字符串
        }catch(JsonProcessingException e){
            logger.error("JSON序列化出错:"+obj, e);
            return null;
        }
        
        //将指定JSON字符串、输入流解析为指定数据类型
        public static <T> T toBean(String json, Class<T>tClass){
            try{
                return mapper.readValue(json, tClass);
            }catch(IOException e){
                logger("json解析出错:"+json, e);
                return null;
            }
        }
        
        //将指定JSON字符串解析为指定数据集合、键值对集合、复杂类型对象
        public static <E> List<E> toList(String json, Class<E> eClass){
            try{
                return mapper.readValue(json, mapper.getTypeFactory()
                .constructCollectionType(List.class, eClass));
            }catch(IOException e){
                logger.error("json解析出错:"+json, e);
                return null;
            }
        }
    }
}

 

  1. JwtUtil:生成和校验token
//1.生成一个字符串类型的base64的JTI(JWT的位移身份标识)密码

//2.私钥加密token(分钟)

//3.私钥加密token(秒钟)

//4.公钥解密token

//5.根据token获取用户信息

//6.根据token获取载荷信息
  1. RsaUtil
//1.从文件中读取密钥

//2.从字节数组中获取公钥

//3.读取路径文件返回字节数组类型
 
4.反思:自己每天代码花崽总结上面很久,为什么不用每个方法的文字俩表达这个具体函数呢,这样不是更加透彻,而且时间更快;到一周总结的时候,把这些代码实现一遍;这样可以更好地节约时间,也可以更好地理解
 
5.复盘:根据现在有的代码回忆起以前的一些知识,将对象序列化为一个JSON字符串,解析字符串为指定类型;再就是一些工具类的编写其实都是固定的一些条件和步骤,这些只要熟练了就知道,就算忘记,看一下也清楚;
posted @ 2022-09-14 10:12  求知律己  阅读(70)  评论(0编辑  收藏  举报