SpringBoot项目中添加拦截器判断用户是否登录,未登录则跳转到登录页面

UserLoginInterceptor.java


package com.acyx.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import com.acyx.constant.ACYXWeChatConstants;

/**
 * description:
 * author:cb
 * datetime:2019年7月28日  下午6:05:42
 */
@Component
public class UserLoginInterceptor implements HandlerInterceptor {
	
	protected org.slf4j.Logger logger = LoggerFactory.getLogger(getClass());
	
	@Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
    		Object handler)throws Exception {
		
		HttpSession session = request.getSession(true);
		Object username=session.getAttribute(ACYXWeChatConstants.SESSION_USER_NAME);
		if(null!=username) {//已登录
			return true;
		}else {//未登录
			//直接重定向到登录页面
			response.sendRedirect(request.getContextPath()+"/wechatplatformuser/loginRBAC.html");
			return false;
		}
	}

}

static下的静态资源如下图所示。

SpringBoot项目中添加拦截器判断用户是否登录,未登录则跳转到登录页面_第1张图片

UserLoginAdapter.java

package com.acyx.adapter;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import com.acyx.interceptor.UserLoginInterceptor;
/**
 * description:
 * author:cb
 * datetime:2019年7月28日  下午6:22:29
 */

@SpringBootApplication
@EnableCaching
public class UserLoginAdapter implements WebMvcConfigurer{
	
	@Autowired
	private UserLoginInterceptor userLoginInterceptor;

	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		
		//添加对用户是否登录的拦截器,并添加过滤项、排除项
		registry.addInterceptor(userLoginInterceptor).addPathPatterns("/**")
			.excludePathPatterns("/css/**","/js/**","/images/**")//排除样式、脚本、图片等资源文件
			.excludePathPatterns("/wechatplatformuser/loginRBAC.html")//排除登录页面
			.excludePathPatterns("/wechatplatformuser/defaultKaptcha")//排除验证码
			.excludePathPatterns("/wechatplatformuser/loginRBAC");//排除用户点击登录按钮
		 
	}
	 
}

此时,启动项目打开Chrome浏览器,输入登录后才能看到的页面URL,均跳转到了登录页面,说明拦截器发挥了作用。

SpringBoot项目中添加拦截器判断用户是否登录,未登录则跳转到登录页面_第2张图片

 

 

 

你可能感兴趣的:(Spring,Boot)