用springboot写一个登录拦截器
时间: 2023-07-01 18:04:36 浏览: 51
好的,以下是使用 Spring Boot 写一个登录拦截器的步骤:
1. 创建一个实现了 HandlerInterceptor 接口的类,例如 LoginInterceptor。
```java
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 在此处编写登录拦截逻辑
return true; // 返回 true 表示继续执行请求
}
// 可以在此处实现 afterCompletion 和 postHandle 方法
}
```
2. 在该类中实现 preHandle 方法,该方法在请求处理之前被调用。在该方法中,可以编写登录拦截的逻辑,例如判断用户是否已登录,如果未登录则重定向到登录页面。如果已登录则返回 true,表示请求可以继续执行。
3. 在 Spring Boot 的配置类中注册该拦截器。
```java
@Configuration
public class AppConfig implements WebMvcConfigurer {
@Autowired
private LoginInterceptor loginInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loginInterceptor).addPathPatterns("/**"); // 添加拦截器,并指定拦截路径
}
}
```
4. 在注册拦截器的时候,可以使用 addPathPatterns 方法指定该拦截器需要拦截的路径,例如上面的例子中指定了拦截所有路径。
5. 最后,在需要进行登录拦截的控制器方法上添加 @LoginRequired 注解,这个注解可以自定义实现,用于标记需要登录才能访问的接口。
```java
@RestController
public class UserController {
@RequestMapping("/user/info")
@LoginRequired // 标记该接口需要登录才能访问
public String getUserInfo() {
// 在此处编写获取用户信息的逻辑
return "User Info";
}
}
```
这样,当用户访问 /user/info 接口时,如果未登录则会被重定向到登录页面,如果已登录则会返回用户信息。