springboot mybatis-plus jwt 登录接口
时间: 2023-03-05 16:27:00 浏览: 78
要使用Spring Boot,MyBatis Plus和JWT创建登录接口,需要执行以下步骤:
1. 添加依赖:在Maven或Gradle中添加Spring Boot,MyBatis Plus和JWT的依赖项。
2. 创建实体类:创建一个User实体类,该实体类将与数据库中的用户表进行映射。
3. 创建Mapper类:使用MyBatis Plus创建一个Mapper类,该类将用于查询和操作数据库中的用户表。
4. 创建控制器类:创建一个控制器类,该类将接收来自客户端的登录请求,并使用JWT生成令牌。
5. 创建JWT工具类:创建一个JWT工具类,该类将用于生成和解析JWT令牌。
下面是一个简单的示例:
1. 添加依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.1</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
```
2. 创建User实体类:
```java
public class User {
private Long id;
private String username;
private String password;
// 省略getter和setter方法
}
```
3. 创建Mapper类:
```java
@Mapper
public interface UserMapper extends BaseMapper<User> {
User findByUsername(String username);
}
```
4. 创建控制器类:
```java
@RestController
public class LoginController {
@Autowired
private UserMapper userMapper;
@PostMapping("/login")
public String login(@RequestBody User user) {
User dbUser = userMapper.findByUsername(user.getUsername());
if (dbUser == null || !dbUser.getPassword().equals(user.getPassword())) {
throw new RuntimeException("用户名或密码错误");
}
String token = JWTUtil.createToken(dbUser.getId());
return token;
}
}
```
5. 创建JWT工具类:
```java
public class JWTUtil {
private static final long EXPIRATION_TIME = 86400000;
private static final String SECRET = "mySecret";
public static String createToken(Long userId) {
return Jwts.builder()
.setSubject(userId.toString())
.setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME))
.signWith(SignatureAlgorithm.HS512, SECRET)
.compact();
}
public static Long getUserIdFromToken(String token) {
Claims claims = Jwts.parser()
.setSigningKey(SECRET)
.parseClaimsJws(token)
.getBody();
return Long.parseLong(claims.getSubject());
}
}
```
以上示例中,控制器类接收POST请求,检查用户名和密码是否匹配。如果匹配,将使用JWT工具类生成令牌,并将其返回给客户端。客户端将使用该令牌作为后续请求的身份验证标识。
请注意,在实际生产环境中,需要考虑更多的安全问题,例如令牌过