外卖笔记
对员工设置密码时,需要先用DigestUtils工具类中的md5DigestAsHex方法对密码进行md5加密。
employee.setPassword(DigestUtils.md5DigestAsHex((PasswordConstant.DEFAULT_PASSWORD.getBytes())) //getBytes() 转化为数组
设置一个密码常量,方便修改:
public class PasswordConstant {
public static final String DEFAULT_PASSWORD = "123456";
}
封装属性:
//设置当前记录的创建时间和修改时间
//employee.setCreateTime(LocalDateTime.now());
//employee.setUpdateTime(LocalDateTime.now());
//设置当前记录 创建人和修改人id
// TODO 后期需要改为当前登录用户的id
//employee.setCreateUser(10L);
//employee.setUpdateUser(10L);
调用持久层插入数据:
employeeMapper.insert(employee) //把employee放进去
扩展insert方法:
/**
* 插入员工数据
* @param employee
*/
@Insert("insert into employee (name, username, password, phone, sex, id_number, create_time, update_time, create_user, update_user ,status) " +
"values " +
"(#{name},#{username},#{password},#{phone},#{sex},#{idNumber},#{createTime},#{updateTime},#{createUser},#{updateUser},#{status})") //@Insert是注解
void insert(Employee employee);
访问swagger接口文档:
localhost:8080/doc.html
因为EmployeeServicelmpl.java里面设置了md5加密:
所以数据库employee员工密码改成e10adc3949ba59abbe56e057f20f883e
不改登不上前端。
application-dev.yml里面:
host: localhost
port: 3306 //3306也是数据库端口号,别写成8080,死都登不上。
//修改成自己数据库的用户名和密码
username: root
password: "123456"
//封装数据,相应给前端页面。
EmployeeLoginVO employeeLoginVO = EmployeeLoginVO.builder() //通过builder构建器封装,前提是需要在EmployeeLoginVO.java中,加上@Builder注解
.id(employee.getId())
.userName(employee.getUsername())
.name(employee.getName())
.token(token)
.build();
return Result.success(employeeLoginVO); //再次把后端相应给前端的数据封装到Result中
// 对前端传过来的明文密码进行md5加密处理
password = DigestUtils.md5DigestAsHex(password.getBytes());
使用了@Bean //表示由spring框架创建并且管理这个对象
新增员工功能测试:
进入swagger: 新增员工,自行添加数据。
在EmployeeController.java的:
log.info("新增员工: {}",employeeDTO); 处加断点
进入swagger点击发送,没有跳到断点。返回401。
原因:没有抓取到jwt令牌。
进入sky-server里的lnterceptor中的JwtTokenAdminlnterceptor.java (里面有进行令牌校验的拦截器)
在此处增加断点:
//1、从请求头中获取令牌
String token = request.getHeader(jwtProperties.getAdminTokenName());
再次去swagger发送,跳转到断点,断点处的token为null。
直接下一步放行,进入:
catch (Exception ex) {
//4、不通过,响应401状态码
response.setStatus(401);
return false;
}
没有令牌就会返回401,我们现在需要获取令牌,进入swagger,调用接口的登录功能,底下有token,复制。
进入文档管理,全局参数设置,粘贴刚刚复制的token,参数类型为header,参数名称需要设为token,因为:
请求头中指定了参数名称(没有写死),在application.yml中有配置:
# 设置前端传递过来的令牌名称
admin-token-name: token
浙公网安备 33010602011771号