苍穹外卖-day01 开发环境搭建 完善登录功能

问题:员工表中的密码是明文存储,安全性太低。

解决思路:

  1. 将密码加密后存储,提高安全性

  2. 使用MD5加密方式对明文密码加密

实现步骤:

  1. 修改数据库中明文密码,改为MD5加密后的密文

    打开employee表,修改密码

2.修改Java代码,前端提交的密码进行MD5加密后再跟数据库中密码比对

打开EmployeeServiceImpl.java,修改比对密码

/**
     * 员工登录
     *
     * @param employeeLoginDTO
     * @return
     */
    public Employee login(EmployeeLoginDTO employeeLoginDTO) {

        //1、根据用户名查询数据库中的数据
       
        //2、处理各种异常情况(用户名不存在、密码不对、账号被锁定)
        //.......
        //密码比对
        // TODO 后期需要进行md5加密,然后再进行比对
        password = DigestUtils.md5DigestAsHex(password.getBytes());
        if (!password.equals(employee.getPassword())) {
            //密码错误
            throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR);
        }

        //........

        //3、返回实体对象
        return employee;
    }

我们先不修改java代码的情况下 看看能不能登录成功

前端传入进来的数据已经封装到

employeeLoginDTO

然后调用employeeService里面的login()方法

所以我们要进入到login()方法里面

这个时候密码匹配不上 因为从数据库上来的密码和前端传递过来的密码不一样

比对不上 这个时候就会抛出异常

一抛异常 就会执行 我们的全局的异常处理器  全局的异常处理器就会捕获到我们的异常

为什么这边显示的是密码错误 的一个Message

是因为我们new  一个异常new PasswordErrorException

同时把PASSWORD_ERROR给传进来

而这个PASSWORD_ERROR是怎么来的呢

是因为我们定义了一个消息常量类

我们项目当中给前端的提示信息     都通过常量类里面的一个一个常量    来定义的

所以这边一抛出一个异常   全局处理器去捕获异常

所以我们要改造一个java代码

进行MD5加密

把前端传递过来的明文密码(123456)进行MD5加密处理

处理之后在根数据库中的密文进行对比

用工具类DigestUtils中的方法md5DigestAsHex()

把明文密码 也就是password传入进来   并且要转成一个Byte数组   所以要password.getBytes()

//密码比对
// 对前端传递过来的明文密码进行md5加密处理
  password = DigestUtils.md5DigestAsHex(password.getBytes());

 

if没有成立 说明密码是一样的

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值