拦截器解析token后直接存储在线程本地变量当中,之后的controller,Service,Mapper都可以直接获取用户信息了
编写ThreadLocal工具类
理论上我们可以在Controller方法中,使用@RequestHeader获取JWT,然后在进行解析,如下
@Operation(summary = "获取登陆用户个人信息")
@GetM...
编写HandlerInterceptor
创建一个拦截器类实现HandlerInterceptor接口
主要有三大方法
preHandle(..) — callback before the actual handler is run that returns a boolean. If the method returns true, executio...
带签名的JWT叫JWS
登录接口需要为登录成功的用户创建并返回JWT,本项目使用开源的JWT工具Java-JWT,配置如下,具体内容可参考官方文档。
引入Maven依赖
在common模块的pom.xml文件中增加如下内容
<dependency>
<groupId>io.jsonwebtoken</groupI...
官方文档:https://gitee.com/ele-admin/EasyCaptcha
<dependency>
<groupId>com.github.whvcse</groupId>
<artifactId>easy-captcha</artifactId>
</depe...
https://www.bilibili.com/video/BV1At421K7gP?p=139&spm_id_from=pageDriver&vd_source=2f88c79898ac6db8b9db2d2439d8c6b0
Mybatis-Plus update strategy
使用Mybatis-Plus提供的更新方法时,若实体中的字段为null,默认情况下,最终生成的update语句中,不会包含该字段。若想改变默认行为,可做以下配置。
全局配置
在application.yml中配置如下参数
mybatis-plus:
global-config:
db-co...
知识点:
密码处理
用户的密码通常不会直接以明文的形式保存到数据库中,而是会先经过处理,然后将处理之后得到的"密文"保存到数据库,这样能够降低数据库泄漏导致的用户账号安全问题。
密码通常会使用一些单向函数进行处理,如下图所示
常用于处理密码的单向函数(算法)有MD5、SHA-256等,Apache Commons提供了一个工具类...
@Schema(description = "密码")
@TableField(value = "password",select = false)
private String password;
添加注解后,MybatisPlus通用的Service和通用Mapper就不会把密码 select了
本节内容是通过定时任务定时检查租约是否到期。SpringBoot内置了定时任务,具体实现如下。
启用Spring Boot定时任务
在SpringBoot启动类上增加@EnableScheduling注解,如下
@SpringBootApplication
@EnableScheduling
public class AdminWebAppl...
ViewAppointment实体类中的appointmentTime字段为Date类型,Date类型的字段在序列化成JSON字符串时,需要考虑两个点,分别是格式和时区。本项目使用JSON序列化框架为Jackson,具体配置如下
格式
格式可按照字段单独配置,也可全局配置,下面分别介绍
单独配置
在指定字段增加@JsonFormat注解,如下
@Js...
collection一对多的关系
association是一对一的关系
https://www.cnblogs.com/monianxd/p/16477331.html
看图,两段代码有什么不同
因为错误的使用了and的连接方式,导致语法错误,找了很久才找出来。
这两段代码的区别在于在条件判断为真时添加 and 的位置。
第一段代码中,在条件判断为真时,在条件前添加了 and ,例如: and ai.province_id = #{queryVo.provinceId} 。
第二段代码中,只有在第二个及后续的条件判断为真...
1. 项目概述
1.1 项目业务概述
尚庭公寓是一个公寓租赁平台项目,包含移动端和后台管理系统,其中移动端面向广大用户,提供找房、看房预约、租约管理等功能,后台管理系统面向管理员,提供公寓(房源)管理、租赁管理、用户管理等功能。下面分别介绍两端的具体业务功能。
1.1.1 移动端
移动端的线上体验地址为:http://139.198.127.41:8002...
BeanUtils.copyProperties(Object source,Object Target)是由Spring提供的方法,用于讲一个给定的源Bean的属性值赋值给目标Bean之中,
只要属性匹配甚至源类和目标类都不用匹配
例如:
//使用Spring的eanUtils.copyProperties将数据赋值派生出来数据多的类
...