HandlerInterceptorAdapter中返回401状态码给前端
时间: 2023-08-04 10:32:26 浏览: 196
在 SpringMVC 中,可以通过实现 `HandlerInterceptor` 接口来拦截请求,并在请求处理之前或之后执行一些操作。如果你想在拦截器中返回一个 401 状态码给前端,可以按照以下步骤进行:
1. 创建一个拦截器类并继承 `HandlerInterceptorAdapter`:
```java
public class AuthInterceptor extends HandlerInterceptorAdapter {
// ...
}
```
2. 实现 `preHandle` 方法,在该方法中进行拦截逻辑的处理:
```java
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 如果用户未登录,返回 401 状态码
if (userNotLoggedIn) {
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
response.getWriter().write("{\"message\": \"Unauthorized\"}");
return false;
}
// 如果用户已登录,继续执行请求
return true;
}
```
在上述代码中,我们实现了 `preHandle` 方法,并在该方法中判断用户是否已登录。如果用户未登录,我们设置了响应状态码为 `SC_UNAUTHORIZED`,并返回一个 JSON 格式的消息体。如果用户已登录,我们返回 `true`,表示允许请求继续执行。
3. 在 SpringMVC 配置文件中注册拦截器:
```xml
<mvc:interceptors>
<bean class="com.example.AuthInterceptor"/>
</mvc:interceptors>
```
在上述代码中,我们通过 `<mvc:interceptors>` 标签将 `AuthInterceptor` 注册为拦截器。
这样,在请求到达被拦截的接口时,如果用户未登录,就会返回一个 401 状态码以及相应的消息体给前端。