MD5在UserService里面生成的摘要不一样
相关代码:UserService
package com.imooc.oa.service;
import com.imooc.oa.dao.RbacDao;
import com.imooc.oa.dao.UserDao;
import com.imooc.oa.entity.Node;
import com.imooc.oa.entity.User;
import com.imooc.oa.exception.BussinessException;
import com.imooc.oa.utils.MD5Utils;
import com.imooc.oa.utils.MyBatisUtils;
import java.util.List;
public class UserService {
private UserDao userDao = new UserDao();
private RbacDao rbacDao = new RbacDao();
/**
* 根据前台输入进行登录校验
* @param username 前台输入的用户名
* @param password 前台输入的密码
* @return User实体类
* @threws 自定义异常类BussinessException L001-用户名不存在 L002-密码错误
*/
public User checkLogin(String username, String password) {
User user = userDao.selectByUsername(username);
if (user == null) {
//抛出用户不存在异常
throw new BussinessException("L001", "用户名不存在");
}
//对前台输入的密码加盐混淆生成MD5摘要,与保存在数据库中的MD5进行对比
String md5 = MD5Utils.md5Digest(password, user.getSalt());
if (!md5.equals(user.getPassword())) {
throw new BussinessException("L002", "密码错误");
}
return user;
}
/**
* 没有什么业务逻辑 直接传递调用
* @param userId 要查询拥有那些功能的员工编号
* @return Node实体类的功能列表
*/
public List<Node> selectNodeByUserId(Long userId) {
List<Node> nodeList = rbacDao.selectNodeByUserId(userId);
return nodeList;
}
}
相关代码:Testor
package com.imooc.oa.utils;
import org.junit.Test;
import static org.junit.Assert.*;
public class MD5UtilsTest {
@Test
public void md5Digest() {
System.out.println(MD5Utils.md5Digest("test"));
System.out.println(MD5Utils.md5Digest("test"));
System.out.println(MD5Utils.md5Digest("test"));
System.out.println(MD5Utils.md5Digest("test"));
}
@Test
public void md5Digest2() {
System.out.println(MD5Utils.md5Digest("test", 188));
System.out.println(MD5Utils.md5Digest("test", 189));
System.out.println(MD5Utils.md5Digest("test", 190));
System.out.println(MD5Utils.md5Digest("test", 191));
System.out.println(MD5Utils.md5Digest("test", 192));
System.out.println(MD5Utils.md5Digest("test", 193));
System.out.println(MD5Utils.md5Digest("test", 194));
System.out.println(MD5Utils.md5Digest("test", 195));
System.out.println(MD5Utils.md5Digest("test", 196));
System.out.println(MD5Utils.md5Digest("test", 197));
}
}
相关代码:
LoginServlet
package com.imooc.oa.controller;
import com.alibaba.fastjson.JSON;
import com.imooc.oa.entity.User;
import com.imooc.oa.exception.BussinessException;
import com.imooc.oa.service.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@WebServlet(name = "LoginServlet", urlPatterns = "/check_login")
public class LoginServlet extends HttpServlet {
//Logger 日志输出器 LoggerFactory.getLogger(LoginServlet.class)创建指定类的输出器
Logger logger = LoggerFactory.getLogger(LoginServlet.class);
private UserService userService = new UserService();
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
//接收用户输入的信息
String username = request.getParameter("username");
String password = request.getParameter("password");
Map<String, Object> result = new HashMap();
//调用业务逻辑
try {
User user = userService.checkLogin(username, password);
HttpSession session = request.getSession();
result.put("code", "0");
result.put("message", "success");
result.put("redirect_url", "/index");
//向session中储存登录用户信息,以便于IndexServlet调用User
session.setAttribute("login_user", user);
} catch (BussinessException ex) {
logger.error(ex.getMessage(), ex);//在日志中输出异常信息
result.put("code", ex.getCode());
result.put("message", ex.getMessage());
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
result.put("code", ex.getClass().getSimpleName());//Exception.getClass().getSimpleName()获取异常名
result.put("message", ex.getClass());
}
//返回对应结果 ---- 利用json只返回数据就可以了 不需要指定在那个页面返回 再利用ajax技术接收数据
//我们采用ajax的请求向服务器发送异步的通讯,告诉前台服务器校验是否通过的消息,不再在controller层进行页面跳转,只进行数据接收处理和返还
String json = JSON.toJSONString(result);
response.getWriter().println(json);
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
22
收起
正在回答 回答被采纳积分+1
1回答
java工程师2020版
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星