SpringMVC 拦截器实现身份验证

拦截器定义

拦截器可以对请求或响应进行过滤,设置规则将某些请求进行处理

比如身份验证,对用户的请求,验证其是否已经登录,如果没有则客户端重定向到登录页面

定义一个拦截器,需要继承拦截器接口

public interface HandlerInterceptor {
   
	/**
	处理器调用之间执行,可以进行编码,安全控制以及权限校验等操作
	*/
	
	default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
   

		return true;
	}
	/**
	业务处理器返回true后,生成视图之前执行,这样有机会对ModelAndView进行修改
	 */
	default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			@Nullable ModelAndView modelAndView) throws Exception {
   
	}

	/**
	在上面两个方法都执行成功后调用,主要用于清理资源,返回处理
	 */
	default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
			@Nullable Exception ex) throws Exception {
   
	}

}
package hrs;

import hrs.entity.User;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring MVC拦截器是一个强大的机制,可以在请求到达控制器之前和响应返回客户端之前拦截和处理请求和响应。拦截器可以用于许多用例,例如身份验证、日志记录、性能测量等。 要创建Spring MVC拦截器,需要实现HandlerInterceptor接口。该接口定义了三个方法: 1. preHandle() - 在请求到达处理程序之前被调用,可以用于执行身份验证或准备模型数据。 2. postHandle() - 在处理程序返回之后被调用,在响应发送到客户端之前可以修改模型数据或视图。 3. afterCompletion() - 在视图已经渲染之后被调用,可以用于清理资源或记录日志。 然后,在Spring配置文件中配置拦截器,并将其添加到拦截器链中。以下是一个简单的拦截器示例: ```java public class LoggingInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 在请求到达处理程序之前执行身份验证或其他预处理操作 return true; // 如果返回false,则请求将被拦截并不执行后续处理 } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 在处理程序返回之后执行操作,可以修改模型数据或视图 } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 在视图已经渲染之后执行操作,可以用于清理资源或记录日志 } } ``` 在Spring配置文件中,可以使用<mvc:interceptors>元素配置拦截器: ```xml <mvc:interceptors> <bean class="com.example.LoggingInterceptor"/> </mvc:interceptors> ``` 在这个例子中,我们将LoggingInterceptor添加到拦截器链中。在每个请求到达处理程序之前,preHandle()方法将被调用,可以在该方法中执行身份验证或其他预处理操作。如果返回true,则请求将继续传递给处理程序。在处理程序返回之后,postHandle()方法将被调用,可以修改模型数据或视图。在视图已经渲染之后,afterCompletion()方法将被调用,可以用于清理资源或记录日志。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值