登录功能
数据库
创建了一个表login_ticket来记录登录凭证,类似于session
核心字段是ticket
entity
创建了一个类loginTicket
mapper
处理login_ticket的mapper接口层,用来往里面查询数据、增加数据和修改数据
查询数据通过ticket来查
- select是通过ticket查找凭证
- update那里演示了一下这种注释的写法怎么插入动态sql
写一个测试方法测试一下insert
测试一下select和update
service
- 传进来的用户名username、密码password是不是有值
- 账号是否存在,账号是否已经激活satus = 1
- 通过username查到的user的密码是不是和传进来的password加盐后一样
- 生成登录凭证
controller
- 检查验证码是否为空,是否正确
- 检查账号密码是否正确,rememberme状态是否勾选
看看service层传回来的map值里面有没有ticket?map的msg是不是空的
不是空的的话就把map里面三种错误信息传给前端页面
前端
controller参数里面如果传递的是对象,像user这种,springmvc能直接传给前端;但是普通类型不行,需要在前端页面声明th:value = "${param.username}" ,相当于从request里面拿到参数
退出功能
service
controller
显示登录信息
拦截器
拦截器interceptor可以拦截浏览器发出的请求,和controller无关,避免耦合
在webmvcinterceptor进行配置,不然spring不知道应该拦截哪些请求
它其实就是实例化了一个上面创建的alphaInterceptor,然后把他传给了一个叫做interceptorRegistry的注册中心,把他注册到了这个中心里面之后,定义要拦截哪些请求,排除哪些请求
测试
他打印出来的handler就是拦截的目标
显示登录信息
每一次请求都是这个逻辑,所以要把这个逻辑写在拦截器里比较好
在请求开始时查询登录用户
在userservice中添加通过ticket查询loginticket的方法
从request中提取cookie的工具类,传入request对象和key值来匹配cookie,一个request可能有很多cookies
在本次请求中持有用户数据
创建工具类hostholder持有用户信息,用于代替session对象
在模板视图上显示用户数据
在请求结束时清理用于数据
配置拦截器
前端
controller执行之前,根据请求的凭证,得到了用户,放到了hostHolder里面、
controller执行完成之后,又得到了这个user, 放到了model里,让前端能得到loginuser
退出登陆的时候,凭证设置为失效,在这次请求中拦截器虽然得到了凭证,但是凭证的status是1