3.载荷和结果实体类以及Jwt
1.昨天为了将两个项目推送到远程仓库,了解了一下分支,将一个小工程作为一个分支,这是发生在git add .,git commit -m "描述"以及git reomte add origin HTTP之后的
- 获取当前仓库的分支
git branch
- 检查分支
git checkout branch
- 推送项目文件到分支
git push origin "分支名"
2.首先创建了一个test的数据库,然后创建了:sys_user、sys_role、sys_user_role三张表,并插入张表的数据;
3.编写了sso-common模块的payload(载荷)和result(结果)实体类;再编写了JsonUtil,JWTUtil以及RsaUtil等工具类
- 载荷
@data//get,set public class Payload<T> implements Serializable{ private int id; private T userInfo;//用户信息 private Date exppiration;//过期时间 }
- result
@Data @AllArgsConstructor @NoArgsConstructor public class Result implements Serializable{ private Inteher code; private String msg; private Object data; }
- 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; } } } }
- JwtUtil:生成和校验token
//1.生成一个字符串类型的base64的JTI(JWT的位移身份标识)密码 //2.私钥加密token(分钟) //3.私钥加密token(秒钟) //4.公钥解密token //5.根据token获取用户信息 //6.根据token获取载荷信息
- RsaUtil
//1.从文件中读取密钥 //2.从字节数组中获取公钥 //3.读取路径文件返回字节数组类型
4.反思:自己每天代码花崽总结上面很久,为什么不用每个方法的文字俩表达这个具体函数呢,这样不是更加透彻,而且时间更快;到一周总结的时候,把这些代码实现一遍;这样可以更好地节约时间,也可以更好地理解
5.复盘:根据现在有的代码回忆起以前的一些知识,将对象序列化为一个JSON字符串,解析字符串为指定类型;再就是一些工具类的编写其实都是固定的一些条件和步骤,这些只要熟练了就知道,就算忘记,看一下也清楚;