c83838dd5ecda801f9d8699020d5648a99da91af.svn-base 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package com.xxl.job.admin.controller.interceptor;
  2. import com.xxl.job.admin.controller.annotation.PermissionLimit;
  3. import com.xxl.job.admin.core.model.XxlJobUser;
  4. import com.xxl.job.admin.core.util.I18nUtil;
  5. import com.xxl.job.admin.service.LoginService;
  6. import org.springframework.stereotype.Component;
  7. import org.springframework.web.method.HandlerMethod;
  8. import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
  9. import javax.annotation.Resource;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12. /**
  13. * 权限拦截
  14. *
  15. * @author xuxueli 2015-12-12 18:09:04
  16. */
  17. @Component
  18. public class PermissionInterceptor extends HandlerInterceptorAdapter {
  19. @Resource
  20. private LoginService loginService;
  21. @Override
  22. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
  23. if (!(handler instanceof HandlerMethod)) {
  24. return super.preHandle(request, response, handler);
  25. }
  26. // if need login
  27. boolean needLogin = true;
  28. boolean needAdminuser = false;
  29. HandlerMethod method = (HandlerMethod)handler;
  30. PermissionLimit permission = method.getMethodAnnotation(PermissionLimit.class);
  31. if (permission!=null) {
  32. needLogin = permission.limit();
  33. needAdminuser = permission.adminuser();
  34. }
  35. if (needLogin) {
  36. XxlJobUser loginUser = loginService.ifLogin(request, response);
  37. if (loginUser == null) {
  38. response.sendRedirect(request.getContextPath() + "/toLogin");
  39. //request.getRequestDispatcher("/toLogin").forward(request, response);
  40. return false;
  41. }
  42. if (needAdminuser && loginUser.getRole()!=1) {
  43. throw new RuntimeException(I18nUtil.getString("system_permission_limit"));
  44. }
  45. request.setAttribute(LoginService.LOGIN_IDENTITY_KEY, loginUser);
  46. }
  47. return super.preHandle(request, response, handler);
  48. }
  49. }