用户登录
//-------前台思路--------//
传递三个参数,phone,password ,type (type用来判断是用户登录还是员工登录)
//--------后台思路--------//
Controller拿到这三个参数(可以用一个LoginDto封装起来) 把参数传递到service 层 并给页面返回一个map 里面存放了登录的一些信息
Service 拿到数据,进行业务处理
- ) 非空判断,
- ) 通过Dto 对象里面的phone,type去查loginInfo表 查询有没有该对象
- )对象存在, 判断用户输入的密码和对象的里面是否一致
注意:密码都是通过MD5技术加密的,
先拿到对象longininfo的盐值 拼接前台传递过来的password 然后通过工具类进行加密 得到加密之后的密码
String password = MD5Utils.encrypByMd5(salt + loginDto.getPassword())
将这个加密过后的密码跟数据库的密码进行对比
- 密码正确 就把用户信息存入到redis中
Redis中 存了 token, logininfo,有效时间 (token是通过uuid工具类生成的令牌,相当于用户的唯一标识,一个用户对应一个token)
(5) 前台需要一个map 创建一个map 把redis的里面的值 通过map返回
map.put(“token”,token),
Map.put(“logininfo”,logininfo)
Logininfo 是一个对象 保存在本地的时候,需要序列化
(6 ) 返回map
拦截器: 有四个 前置拦截器 拦截后台的,只有发送axios请求到后台都会携 带token 为了给后端校验是否登录
后置拦截器 拦截后台的,为了取到响应的内容
前台拦截器 拦截前台页面的,在没有和后台进行数据交 互的时候,对某一些特定的页面放行 可以不登录 访问
后台拦截器 拿到redis里面的token中的value. 里面保存了用户的信息,跟数据库对比,判断是否登录