Web后端登录功能实现
思路:
- 使用前端传入的用户名去查询该用户名是否存在
- 不存在,抛出异常并返回登录页面
- 存在,用该用户名查询出User数据
- 将前端传入的密码进行一次MD5加密
- 使用加密后的密码与User中的密码比较
- 如果密码不一致,抛出异常并返回到登录页面
- 密码一致,登录成功,将User保存到Session域中
代码实现
Controller层
/**
* @Author: yzh
* @Description: 用户登录功能
* @Param: [username, password, session]
* @return: java.lang.String
* @Date: 2021/8/13
*/
@RequestMapping("login")
public String login(String username,String password,HttpSession session) throws UnsupportedEncodingException {
log.debug("接收到用户名:{}, 接收到密码:{}",username,password);
try {
//1.执行登录业务逻辑
User user = userService.login(username,password);
//2.登录成功,保存用户登录标记
session.setAttribute("user",user);
} catch (Exception e) {
e.printStackTrace();
return "redirect:/login.jsp?msg="+URLEncoder.encode(e.getMessage(),"UTF-8");
}
return "redirect:/employee/list";
}
Service层
/**
* @Author: yzh
* @Description: 用户登录
* @Param: [username, password]
* @return: User
* @Date: 2021/8/13
*/
@Override
public User login(String username, String password) {
//1.根据用户输入用户名查询数据中是否存在
User user = userDao.findByUserName(username);
//2.判断对象是否存在
if (ObjectUtils.isEmpty(user)) throw new RuntimeException("用户名输入错误!")