发表于: 2017-10-31 23:57:31
1 801
今天完成的事情:
准备小课堂.因为要拓展一个基于jwt的Token ,看了其他师兄的小课堂都还没有提及到这一块. 所以深入理解一下.
完成MD5加盐
因为小课堂要分享Token,,所以这里准备了一个Token工具类..暂时还未实现,,理解的深度不够..
public class JWTToken {
private static Logger log = LoggerFactory.getLogger(JWTToken.class);
//该方法使用HS256算法和Secret:bankgl生成signKey
private static Key getKeyInstance() {
// 用我们的ApiKey secret来签署我们的JavaWebToken
SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary("bankgl");
Key signingKey = new SecretKeySpec(apiKeySecretBytes, signatureAlgorithm.getJcaName());
return signingKey;
}
//使用HS256签名算法和生成的signingKey最终的Token,claims中是有效载荷
public static String createJavaWebToken(Map<String, Object> claims) {
return Jwts.builder().setClaims(claims).signWith(SignatureAlgorithm.HS256, getKeyInstance()).compact();
}
//解析Token,同时也能验证Token,当验证失败返回null
public static Map<String, Object> parserJavaWebToken(String jwt) {
try {
Map<String, Object> jwtClaims =
Jwts.parser().setSigningKey(getKeyInstance()).parseClaimsJws(jwt).getBody();
return jwtClaims;
} catch (Exception e) {
log.error("json web token verify failed");
return null;
}
}
}
明天计划完成的事情:
小课堂是一件,
小课堂讲过之后将任务五当中漏掉的地方补回来,
一个注册页面,, 然后是账户密码的比对方式. 更改账户密码比对方式之后使用MD5对其进行加盐.
删除Cookie, 搞完这些可以提交任务.
遇到的困难:
对Token的实现过程中遇到点困难,这段代码的逻辑理不通,应该是少了部分代码
收获:
把token的运行机制理解清楚了.
第一次认证:第一次登录,用户从浏览器输入用户名/密码,提交后到服务器的登录处理的Action层(Login Action);
Login Action调用认证服务进行用户名密码认证,如果认证通过,Login Action层调用用户信息服务获取用户信息(包括完整的用户信息及对应权限信息);
返回用户信息后,Login Action从配置文件中获取Token签名生成的秘钥信息,进行Token的生成;
生成Token的过程中可以调用第三方的JWT Lib生成签名后的JWT数据;
完成JWT数据签名后,将其设置到COOKIE对象中,并重定向到首页,完成登录过程;
任务开始时间2017-10-23
任务结束时间2017-11-05
无延期风险.
禅道;http://task.ptteng.com/zentao/task-view-12685.html
评论