仿牛客项目Day5:开发登录、退出功能

登录功能

数据库

创建了一个表login_ticket来记录登录凭证,类似于session

核心字段是ticket

entity

创建了一个类loginTicket

mapper

处理login_ticket的mapper接口层,用来往里面查询数据、增加数据和修改数据

查询数据通过ticket来查

  • select是通过ticket查找凭证
  • update那里演示了一下这种注释的写法怎么插入动态sql

写一个测试方法测试一下insert

 

 测试一下select和update

service

  1. 传进来的用户名username、密码password是不是有值
  2. 账号是否存在,账号是否已经激活satus = 1
  3. 通过username查到的user的密码是不是和传进来的password加盐后一样
  4. 生成登录凭证

controller

  1. 检查验证码是否为空,是否正确
  2. 检查账号密码是否正确,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

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-12 04:10:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-12 04:10:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-12 04:10:03       82 阅读
  4. Python语言-面向对象

    2024-03-12 04:10:03       91 阅读

热门阅读

  1. JVM-5

    JVM-5

    2024-03-12 04:10:03      44 阅读
  2. js怎么清空数组?

    2024-03-12 04:10:03       45 阅读
  3. LCR 172. 统计目标成绩的出现次数(二分查找)

    2024-03-12 04:10:03       33 阅读
  4. 蓝桥杯2023年-更小的数(字符串,推理)

    2024-03-12 04:10:03       41 阅读
  5. Android Selinux详解[二]--新增文件标签相关

    2024-03-12 04:10:03       43 阅读