springboot mybatis-plus jwt 登录接口
时间: 2023-03-05 13:36:19 浏览: 194
下面是一个使用 Spring Boot、Mybatis-Plus 和 JWT 实现登录接口的示例:
首先,你需要添加以下依赖项到你的 `pom.xml` 文件中:
```xml
<dependencies>
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Mybatis-Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<!-- MySQL 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
<!-- JWT -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
</dependencies>
```
接着,你需要创建一个用户模型类 `User`,它应该包含用户名和密码等信息:
```java
public class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
```
然后,你需要创建一个用户数据访问接口 `UserMapper`,它应该继承 `BaseMapper` 接口,并使用 Mybatis-Plus 提供的注解来完成 CRUD 操作:
```java
@Mapper
public interface UserMapper extends BaseMapper<User> {
// 根据用户名查询用户
User selectByUsername(String username);
}
```
接着,你需要创建一个 JWT 工具类 `JwtUtils`,它应该包含生成 JWT、解析 JWT 等操作:
```java
public class JwtUtils {
// 密钥
private static final String SECRET = "your-secret-key";
// 过期时间
private static final long EXPIRATION_TIME = 86400000;
// 生成 JWT
public static String generateToken(String username) {
Date now = new Date();
Date expiration = new Date(now.getTime() + EXPIRATION_TIME);
return Jwts.builder()
.setSubject(username)
.setIssuedAt(now)
.setExpiration(expiration)
.signWith(SignatureAlgorithm.HS256, SECRET)
.compact();
}
// 解析 JWT
public static String getUsernameFromToken(String token) {
return Jwts.parser()
.setSigningKey(SECRET)
.parseClaimsJws(token)
.getBody()
.getSubject();
}
}
```
接着,你需要创建一个登录控制器 `AuthController`,它应该包含登录接口和刷新 JWT 接口:
```java
@RestController
public class AuthController {
@Autowired
private UserMapper userMapper;
// 登录接口
@PostMapping("/login")
public String login(@RequestBody User user) {
// 查询用户
User dbUser = userMapper.selectByUsername(user.getUsername());
if (dbUser == null || !dbUser.getPassword().equals(user.getPassword()))