HandlerInterceptor 实现鉴权
时间: 2023-10-13 14:05:01 浏览: 45
HandlerInterceptor 是 Spring MVC 框架提供的一个拦截器接口,可以用来拦截客户端请求,并在请求处理前或处理后进行相应的处理。在实现鉴权功能时,可以通过实现 HandlerInterceptor 接口,在 preHandle 方法中进行用户身份验证,如果验证失败,则返回未授权的错误信息,如果验证通过,则返回 true,允许请求继续进行。
下面是一个简单的示例代码:
```java
public class AuthInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String token = request.getHeader("Authorization");
if (token == null) {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "未授权的请求");
return false;
}
// 验证 token 是否有效,如果无效则返回未授权的错误信息
boolean isValid = validateToken(token);
if (!isValid) {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "未授权的请求");
return false;
}
return true;
}
private boolean validateToken(String token) {
// 实现 token 验证逻辑
// 如果 token 有效,则返回 true,否则返回 false
}
}
```
上述代码中,我们通过 preHandle 方法拦截了客户端请求,并从请求头中获取了 Authorization 字段,然后进行了用户身份验证。如果验证成功,则返回 true,允许请求继续进行,否则返回未授权的错误信息。
在使用 HandlerInterceptor 时,需要将其注册到 Spring MVC 框架中。可以通过配置文件或注解的方式进行注册。这里给出一种通过配置文件的方式:
```xml
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.example.AuthInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
```
上述配置将 AuthInterceptor 注册到了所有的请求中,并且所有请求都会被该拦截器所拦截。如果需要对某些请求进行排除,可以通过 exclude-mapping 进行配置。例如:
```xml
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/public/**"/>
<bean class="com.example.AuthInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
```
上述配置将 AuthInterceptor 注册到了所有的请求中,但是排除了 /public/** 的请求,这些请求不会被该拦截器所拦截。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)