SSM中添加拦截器(拦截未登录用户)

  目前自己写了一个小项目。希望在未登录状态时,不能访问其他页面,只能访问登录页。在该项目中添加拦截器即可实现该功能。

  首先新建一个interceptor拦截器。
SSM中添加拦截器(拦截未登录用户)_第1张图片

package com.qust.shbz.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import com.qust.shbz.log.entry.LogUser;

/**
 * 配置拦截器,拦截未登录用户
 * @author zhaohualuo
 * @version 2019年5月8日
 * @since 1.0
 */
public class LoginInterceptor implements HandlerInterceptor {

	@Override
	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		//执行完毕,返回前拦截
	}

	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
			throws Exception {
		//处理过程中执行拦截
	}

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
		//在拦截点执行前拦截,如果返回true则不执行拦截点后的操作(拦截成功)
		//返回false则不执行拦截
		if(LogUser.getTyshxym() == null || LogUser.getTyshxym() == "") {
			//登录失败,跳转到登录页
			response.sendRedirect(request.getContextPath());
			return false;
		}else{
			//登陆成功,不拦截
			return true;
		}
	}

}

  在上面的拦截器代码中,LogUser.getTyshxym()是自己要判断的用户名什么的,也可以放在session里。即登录之后,用户名放到session里。若session里面有用户名,则已登录,不需要拦截。若session里没有该用户名,则需要重定向到登录页。

  然后还需要在springmvc.xml配置文件里配置拦截器。
SSM中添加拦截器(拦截未登录用户)_第2张图片


	
		
			
			
			
			
						
		
	

  注意这里如果拦截所有资源的话,会把css等静态资源都拦截到,建议只拦截响应的html或者jsp页面。这里是配置不需要拦截的地址。由于我的登录页是根目录,所以根目录不拦截。这个就是你第一步创建的拦截器了。

你可能感兴趣的:(ssm)