发表于: 2017-10-30 22:37:35
1 755
今天完成的事
我想添加一个功能,没有权限的人访问被拦截的网页不是404
而是提示他要登录
我们可以在拦截器里设置
只有满足登录状态才能访问该页
.png)

我想在注册后跳转到首页并且自动登录
@RequestMapping(value = "/userR", method = RequestMethod.POST)
public String addStudent(User user,HttpServletResponse response) {
String url = "/login";
if (user != null) {
System.out.println(user);
//为帐号添加唯一uuid
UUID uu = UUID.randomUUID();
String id = uu.toString().replace("-", "");
user.setId(id);
//注册时默认学习状态为在学状态
user.setStates("学习中");
Long ctime = new Date().getTime();
user.setCreatetime(ctime);
String pwd = user.getPassword();
user.setPassword(AppMD5Util.getMD5(pwd));
user.setLogintime(ctime);
userService.add(user);
System.out.println(user);
String val = id+","+ctime;
desUtil.setKey(key);
desUtil.setEncString(val);
Cookie cookie = new Cookie("token",desUtil.getStrMi() );
cookie.setPath("/");
cookie.setMaxAge(5 * 60);
response.addCookie(cookie);
//注册成功,重定向到首页
url = "redirect:/home";
}
return url;
}
修改
MD5加密和DES加密
给MD5加盐
.png)

String pwd = user.getPassword();
user.setPassword(AppMD5Util.getMD5(pwd));
在注册的时候给MD5加密
MD5的加密是不可逆的
因此登录的时候同样会把密码加密后和数据库里注册时的密码匹配
但是其实MD5并不安全
网上有些在线解密MD5的网站,我试了一下,确实可以解密
给des加密
des的加密和解密都需要一个key,也就是密钥
因此安全性上比MD5更高
我们在注册的时候会自动生成uuid和logintime
第一次logintime我赋给了创建时的值
然后通过des把id和logintime加密
在验证过程中给他们解密后
通过解密后的数据找到对象并匹配登录
把url改成rest风格
.png)

.png)

目前对rest风格的url还了解不多
遇到的问题
发生了一件很奇怪的事情
之前也提到过我添加了一个在注册后立刻就能自动登录的功能
具体实现就是在注册的时候加一个包含了token信息的cookie然后重定向到首页,首页会判断是否可以自动登录
奇怪的事情就是,这个功能在本地毫无问题,但是在服务器上就行不通了
在服务器上的表现是虽然注册成功,并且重定向到首页
但是在首页是未登录的状态
这个问题的具体原因我现在还不清楚,要是成延师兄有兴趣可以探讨一下这个问题
不过幸好解决问题的方法不是只有这一种
转变一下思路就可以了
我之前觉得注册以后要自动验证登录
其实不用那么麻烦
把注册后的状态直接设定为已登录状态就没问题了
解决方法
.png)

收获
对整个加密解密的流程有了更深入一步的了解
明天完成的事
开始任务6
评论