| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | package com.xxl.job.admin.controller.interceptor;import com.xxl.job.admin.controller.annotation.PermissionLimit;import com.xxl.job.admin.core.model.XxlJobUser;import com.xxl.job.admin.core.util.I18nUtil;import com.xxl.job.admin.service.LoginService;import org.springframework.stereotype.Component;import org.springframework.web.method.HandlerMethod;import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;import javax.annotation.Resource;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * 权限拦截 * * @author xuxueli 2015-12-12 18:09:04 */@Componentpublic class PermissionInterceptor extends HandlerInterceptorAdapter {	@Resource	private LoginService loginService;	@Override	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {				if (!(handler instanceof HandlerMethod)) {			return super.preHandle(request, response, handler);		}		// if need login		boolean needLogin = true;		boolean needAdminuser = false;		HandlerMethod method = (HandlerMethod)handler;		PermissionLimit permission = method.getMethodAnnotation(PermissionLimit.class);		if (permission!=null) {			needLogin = permission.limit();			needAdminuser = permission.adminuser();		}		if (needLogin) {			XxlJobUser loginUser = loginService.ifLogin(request, response);			if (loginUser == null) {				response.sendRedirect(request.getContextPath() + "/toLogin");				//request.getRequestDispatcher("/toLogin").forward(request, response);				return false;			}			if (needAdminuser && loginUser.getRole()!=1) {				throw new RuntimeException(I18nUtil.getString("system_permission_limit"));			}			request.setAttribute(LoginService.LOGIN_IDENTITY_KEY, loginUser);		}		return super.preHandle(request, response, handler);	}	}
 |