IDEA 中 实现登录接口token校验
时间: 2024-05-10 17:14:10 浏览: 122
在 IDEA 中实现登录接口 token 校验,可以按照以下步骤进行:
1. 定义一个登录接口,接收用户名和密码,返回一个 token。
2. 将生成的 token 存储到数据库或者缓存中。
3. 定义一个拦截器,在每个请求到达控制器之前进行拦截,判断请求头中是否携带 token。
4. 如果请求头中携带了 token,则从数据库或缓存中获取对应的 token,并与请求头中的 token 进行比较。
5. 如果比较成功,则放行请求;否则返回错误信息。
下面是一个简单的示例代码:
定义登录接口:
```java
@PostMapping("/login")
public String login(@RequestParam("username") String username,
@RequestParam("password") String password) {
// 根据用户名和密码生成 token,并存储到缓存中
String token = generateToken(username, password);
cache.put(token, user);
return token;
}
```
定义拦截器:
```java
public class TokenInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 判断请求头中是否携带 token
String token = request.getHeader("token");
if (StringUtils.isEmpty(token)) {
response.getWriter().write("Token is missing");
return false;
}
// 从缓存中获取 token
User user = cache.get(token);
if (user == null) {
response.getWriter().write("Token is invalid");
return false;
}
// 放行请求
return true;
}
}
```
在配置类中注册拦截器:
```java
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new TokenInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/login");
}
}
```
在上面的示例中,我们使用了一个缓存来存储 token,实际项目中可以根据需求选择合适的存储方式。
阅读全文