发表于: 2018-01-07 23:54:30
1 618
今日完成
1.注册功能的实现
(1)编写mapper,根据用户名查找用户。
(2)编写注册的service和实现类。
/**
* @param record 页面回传的注册信息
* @return
*/
@Override
public String siginUser(User record, String RecordPassWord) {
//判断是否存在相同用户信息
User userFinder = userMapper.findUserByname(record.getName());
if (userFinder != null) {
return Constant.signFail;
}
//生成注册用户的盐值
String salt = SaltGenerate.getSalt();
record.setSalt(salt);
//将盐值混入密码中
StringBuffer hex = new StringBuffer();
hex.append(record.getPassword()).append(salt);
String message = hex.toString();
//des加密
String desPwd = MessageDigestUtils.SHA256(message);
//存入record中
record.setDesPassword(desPwd);
//清除密码记录(后面直接将表里面的字段删掉)
record.setPassword("");
//执行判断语句并判断插入是否成功
int result = userMapper.insertSelective(record);
if (result == 0) {
return Constant.signFail;
}
return Constant.signSuccess;
}
(3)编写相应的controller
(4)测试效果,能够检查注册用户。
2.编写登录的逻辑
(1)登录的过程中先根据输入的用户名查询用户信息,如果能够查询到用户,在获得该用户的盐值,再使用登录密码与盐值进行加密计算的与数据库的加密后的密文进行比对。
/**
* @param user 页面传入的参数
* @return 返回一个字符串,判断登录状态。
*/
@Override
public String findUser(HttpServletResponse response, User user) {
//判断用户名或者密码是否为空
if (user.getName() == null || user.getPassword() == null) {
return Constant.loginPwdNull;
}
//根据输入的用户名查找用户信息
User checkUser = userMapper.findUserByname(user.getName());
if(null == checkUser){
return Constant.loginNameFail;
}
//获得该用户的盐值
String salt = checkUser.getSalt();
//再次生成des加密后的密码
String checkDesPwd = MessageDigestUtils.SHA256(user.getPassword()+salt);
if (!checkDesPwd.equals(checkUser.getDesPassword()) ) {
return Constant.loginNameFail;
}
//登录成功,使用工具类生成TOKEN;
String token = JwtUtils.generateToken(Constant.siginKey, user.getName());
//将生成的token,放入制定域对象的cookie中,并设置有效时长。
CookieUtils.createCookie(response, Constant.jwtCookieName, token, 60 * 60 * 3);
return Constant.loginSuccess;
}
注册与登录的基本功能都已经实现了。
明日计划
1.完成注销功能。
2.修改bug。
遇到问题
1.session怎么完成单点登录?
收获
1.登录与注册功能的实现
评论