首页>代码>springboot+mysql8.0+freemarker+springboot data jpa整合实现用户权限管理脚手架>/base/src/main/java/com/java214/base/admin/interceptor/AuthorityInterceptor.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 com.java214.base.bean.CodeMsg;
import com.java214.base.util.SessionUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.entity.admin.Menu;
import com.java214.base.entity.admin.User;
import com.java214.base.util.MenuUtil;
import com.java214.base.util.SessionUtil;
import com.java214.base.util.StringUtil;

/**
 * 权限统一管理拦截器
 * @author Administrator
 *
 */
@Component
public class AuthorityInterceptor implements HandlerInterceptor{

	private Logger log = LoggerFactory.getLogger(AuthorityInterceptor.class);
	
	@Override
	public boolean  preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
		String requestURI = request.getRequestURI();
		User loginedUser = SessionUtil.getLoginedUser();
		log.info("进入权限控制拦截器" + requestURI);
		List<Menu> authorities = loginedUser.getRole().getAuthorities();
		if(!MenuUtil.isExistUrl(requestURI, authorities)){
			//进入这里,表示权限不存在,首先判断是否是ajax请求
			if(StringUtil.isAjax(request)){
				//表示是ajax请求
				try {
					log.info("该请求无权限,已ajax方式返回提示,url=" + requestURI);
					response.setCharacterEncoding("UTF-8");
					response.getWriter().write(JSON.toJSONString(CodeMsg.ADMIN_NO_RIGHT));
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				return false;
			}
			//说明是普通的请求,可直接重定向到无权限提示页面
			try {
				log.info("该请求无权限,重定向到无权限提示页面,url=" + requestURI);
				response.sendRedirect("/system/no_right");
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return false;
		}
		log.info("该请求符合权限要求,放行" + requestURI);
		return true;
	}
}
最近下载更多
HANCW  LV8 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日
刘亦菲9527  LV15 2022年6月8日
ls2008  LV15 2022年5月19日
galoisyang  LV8 2022年5月15日
最近浏览更多
wddq123 4月3日
暂无贡献等级
WBelong  LV7 3月29日
HANCW  LV8 3月11日
eternity2002  LV2 2023年11月19日
azoker 2023年11月6日
暂无贡献等级
wnnmmb  LV2 2023年10月19日
duoboss 2023年9月24日
暂无贡献等级
全栈小白  LV33 2023年9月11日
xianyu091012  LV2 2023年8月21日
1997akkk  LV5 2023年8月8日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友