库的下载网址,intellij新建的时候自动从该网址下载。
一. 注册
- 用户名合法性检测(长度,敏感词,重复,特殊字符)
- 密码长度要求
- 密码salt加密(MD5库)
- 用户邮件/短信激活
流程:
LoginController参数传递,调用UserService的register方法,其中保证用户名和密码不能为空,还有调用model下,User的按名字选择的方法,用来保证名字不重复。密码的加密,先设置“盐”,再用md5库(方法)加密password+随机生成的盐,然后把它当做密码保存。其中md5方法的实现,有ToutiaoUtil类实现,具体算法可以百度等搜索。此外,这个类还重构了getJONString方法,用于把前面的密码为空等报错信息输出到页面上。JSon的以来写入pom.xml文件,内容由前面的网址搜索得到。
public Map<String,Object> register(String username, String password){
Map<String,Object> map = new HashMap<String, Object>();
if(StringUtils.isBlank(username)) {
map.put("msgname", "用户名不能为空");
return map; }
if(StringUtils.isBlank(password)){
map.put("msgpwd","密码不能为空");
return map;
}
User user = userDAO.selectByName(username);
if(user != null){
map.put("msgname","用户名已经被注册");
return map;
}
user= new User();
user.setName(username);
user.setSalt(UUID.randomUUID().toString().substring(0,5));
user.setHeadUrl(String.format("http://images.nowcoder.com/head/%dt.png", new Random().nextInt(1000)));
user.setPassword(ToutiaoUtil.MD5(password+user.getSalt()));
userDAO.addUser(user);
二. 登录
- 服务器密码校验/三方校验回调,token登记
1.1 服务器端token(ticket)关联userid
1.2 客户端存储token(app存储本地,浏览器存储cookie) - 服务端/客户端token有效期设置(记住登录)
注:token可以是sessionid,或者是cookie里的一个key。
建立一个loginTicket的表,模型,DAO,可以增加和查询ticket。ticket用于标注登录状态,类似于cookie的作用。
登出
服务端/客户端token删除
session清理
三. 拦截器interceptor
链路回调思想
- preHandle登录验证
判断cookie和其中的ticket,决定是否可以持有用户,记住用户。 - 注册拦截器
四. AJAX
AJAX:异步数据交互
- 页面不刷新
- 体验更好
- 传输数据更少
- APP/网址通用