返回的md5 与数据库不一致,无论输出什么密码都提示错误
相关代码:
package com.imooc.reader.utils;
import org.apache.commons.codec.digest.DigestUtils;
public class Md5Utils {
public static String addSalt(String password, Integer salt) {
char[] chars = password.toCharArray();
for (int i = 0; i < chars.length; i++) {
chars[i] = (char) (chars[i] + salt);
}
String str = new String(chars);
String md5 = DigestUtils.md5Hex(str);
return md5;
}
public static void main(String[] args) {
System.out.println(Md5Utils.addSalt("s123456", 1039));
}
}
相关代码:
package com.imooc.reader.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.imooc.reader.entity.Member;
import com.imooc.reader.expection.BussinessException;
import com.imooc.reader.mapper.MemberMapper;
import com.imooc.reader.service.MemberService;
import com.imooc.reader.utils.Md5Utils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Random;
@Service("memberService")
@Transactional
public class MemberServiceImpl implements MemberService {
@Resource
private MemberMapper memberMapper;
@Override
public Member selectById(Long memberId) {
Member member = memberMapper.selectById(memberId);
return member;
}
@Override
public Member createMember(String username, String password, String nickname) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("username", username);
List memberList = memberMapper.selectList(queryWrapper);
if (memberList.size()>0) {
throw new BussinessException("M01", "用户已存在");
}
Member member = new Member();
member.setUsername(username);
member.setNickname(nickname);
member.setCreateTime(new Date());
Random random = new Random();
Integer salt = random.nextInt(1000) + 1000;
member.setSalt(salt);
String md5 = Md5Utils.addSalt(password, salt);
member.setPassword(md5);
memberMapper.insert(member);
return member;
}
@Override
public Member checkLogin(String username, String password) {
QueryWrapper<Member> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("username", username);
Member member = memberMapper.selectOne(queryWrapper);
if (member == null) {
throw new BussinessException("M02", "用户名不存在");
}
System.out.println(member.getSalt());
String md5 = Md5Utils.addSalt(password, member.getSalt());
if ( !md5.equals(member.getPassword())) {
throw new BussinessException("M03", "密码错误,请核证后输入");
}
return member;
}
}
相关代码:
package com.imooc.reader.controller;
import com.imooc.reader.expection.BussinessException;
import com.imooc.reader.service.MemberService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.nio.BufferOverflowException;
import java.util.HashMap;
import java.util.Map;
@Controller
public class MemberController {
@Resource
private MemberService memberService;
@GetMapping("/register.html")
public ModelAndView showRegister() {
return new ModelAndView("/register");
}
@PostMapping("/register")
@ResponseBody
public Map register(String vc, String username, String password, String nickname, HttpServletResponse response, HttpServletRequest request) {
String verifyCode = (String) request.getSession().getAttribute("KaptchaVerifyCode");
Map result = new HashMap();
if (vc == null || verifyCode == null || !vc.equalsIgnoreCase(verifyCode)) {
result.put("code", "vc01");
result.put("msg", "验证码错误");
} else {
try {
memberService.createMember(username, password, nickname);
result.put("code", "0");
result.put("msg", "success");
} catch (BussinessException ex) {
ex.printStackTrace();
result.put("code", ex.getCode());
result.put("msg", ex.getMsg());
}
}
return result;
}
@GetMapping("/login.html")
public ModelAndView login() {
return new ModelAndView("/login");
}
@PostMapping("/check_login")
@ResponseBody
public Map checkLogin(String vc,String username, String password, HttpSession session) {
String verifyCode = (String) session.getAttribute("KaptchaVerifyCode");
Map result = new HashMap();
if (vc == null || verifyCode == null || !verifyCode.equalsIgnoreCase(vc)) {
result.put("code", "vc01");
result.put("msg", "验证码错误");
}else{
try {
memberService.checkLogin(username, password);
result.put("code", "0");
result.put("msg", "success");
} catch (BussinessException ex) {
ex.printStackTrace();
result.put("code", ex.getCode());
result.put("msg", ex.getMsg());
}
}
return result;
}
}
15
收起
正在回答 回答被采纳积分+1
2回答
java工程师2020版
- 参与学习 人
- 提交作业 9401 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星