首页>代码>springboot+mysql8.0+freemarker+springboot data jpa整合实现用户权限管理脚手架>/base/src/main/java/com/java214/base/admin/interceptor/LoginInterceptor.java
package com.java214.base.admin.interceptor;

import java.io.IOException;
import java.util.List;

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

import com.java214.base.bean.CodeMsg;
import com.java214.base.entity.admin.User;
import com.java214.base.util.MenuUtil;
import com.java214.base.util.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;

import com.alibaba.fastjson.JSON;
import com.java214.base.bean.CodeMsg;
import com.java214.base.config.SiteConfig;
import com.java214.base.constant.SessionConstant;
import com.java214.base.entity.admin.Menu;
import com.java214.base.entity.admin.User;
import com.java214.base.util.MenuUtil;
import com.java214.base.util.StringUtil;

/**
 * 登录拦截器
 * @author Administrator
 *
 */
@Component
public class LoginInterceptor implements HandlerInterceptor{

	private Logger log = LoggerFactory.getLogger(LoginInterceptor.class);
	@Autowired
	private SiteConfig siteConfig;
	
	@Override
	public boolean  preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
		String requestURI = request.getRequestURI();
		HttpSession session = request.getSession();
		Object attribute = session.getAttribute(SessionConstant.SESSION_USER_LOGIN_KEY);
		if(attribute == null){
			log.info("用户还未登录或者session失效,重定向到登录页面,当前URL=" + requestURI);
			//首先判断是否是ajax请求
			if(StringUtil.isAjax(request)){
				//表示是ajax请求
				try {
					response.setCharacterEncoding("UTF-8");
					response.getWriter().write(JSON.toJSONString(CodeMsg.USER_SESSION_EXPIRED));
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				return false;
			}
			//说明是普通的请求,可直接重定向到登录页面
			//用户还未登录或者session失效,重定向到登录页面
			try {
				response.sendRedirect("/system/login");
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return false;
		}
		log.info("该请求符合登录要求,放行" + requestURI);
		if(!StringUtil.isAjax(request)){
			//若不是ajax请求,则将菜单信息放入页面模板变量
			User user = (User)attribute;
			List<Menu> authorities = user.getRole().getAuthorities();
			request.setAttribute("userTopMenus", MenuUtil.getTopMenus(authorities));
			List<Menu> secondMenus = MenuUtil.getSecondMenus(user.getRole().getAuthorities());
			request.setAttribute("userSecondMenus", secondMenus);
			request.setAttribute("userThirdMenus", MenuUtil.getChildren(MenuUtil.getMenuIdByUrl(requestURI,secondMenus),authorities));
			request.setAttribute("siteName", siteConfig.getSiteName());
			request.setAttribute("siteUrl", siteConfig.getSiteUrl());
		}
		return true;
	}
}
最近下载更多
AprilZk  LV3 2024年12月11日
ma406805131  LV19 2024年6月2日
wanglinddad  LV55 2024年5月27日
HANCW  LV9 2024年3月11日
liuxiao2  LV16 2023年6月7日
tnrthr  LV6 2022年12月30日
kk992127170  LV6 2022年10月25日
微信网友_6140765089845248  LV1 2022年9月20日
panchao_123  LV2 2022年9月1日
BHXF7863  LV2 2022年6月23日
最近浏览更多
人间蒸发  LV23 6月4日
AprilZk  LV3 2024年12月11日
liu like 2024年7月7日
暂无贡献等级
陈小灏  LV18 2024年6月23日
TY0165  LV20 2024年6月21日
ma406805131  LV19 2024年6月2日
wanglinddad  LV55 2024年5月27日
wddq123 2024年4月3日
暂无贡献等级
WBelong  LV8 2024年3月29日
HANCW  LV9 2024年3月11日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友