GlobalInterceptor.java 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package com.izouma.awesomeadmin.interceptor;
  2. import com.izouma.awesomeadmin.shiro.AppToken;
  3. import com.izouma.awesomeadmin.util.PropertiesFileLoader;
  4. import io.jsonwebtoken.Claims;
  5. import io.jsonwebtoken.Jwt;
  6. import io.jsonwebtoken.Jwts;
  7. import io.jsonwebtoken.security.Keys;
  8. import org.apache.commons.lang.StringUtils;
  9. import org.apache.shiro.SecurityUtils;
  10. import org.apache.shiro.subject.Subject;
  11. import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
  12. import javax.crypto.SecretKey;
  13. import javax.servlet.http.HttpServletRequest;
  14. import javax.servlet.http.HttpServletResponse;
  15. import java.util.Base64;
  16. import java.util.Date;
  17. /**
  18. * Created by xiong on 2017/6/16.
  19. */
  20. public class GlobalInterceptor extends HandlerInterceptorAdapter {
  21. @Override
  22. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
  23. Subject subject = SecurityUtils.getSubject();
  24. // if (!request.getRequestURI().startsWith("/auth/") && !subject.isAuthenticated() && !request.getRequestURI().startsWith("/admin")) {
  25. // try {
  26. // String token = request.getHeader("api_token");
  27. // SecretKey key = Keys.hmacShaKeyFor(Base64.getDecoder().decode(PropertiesFileLoader.getProperties("jwtsecret").getBytes()));
  28. // Jwt jwt = Jwts.parser()
  29. // .setSigningKey(key)
  30. // .parse(token);
  31. // Claims claims = (Claims) jwt.getBody();
  32. // if (claims.getExpiration() != null) {
  33. // if (claims.getExpiration().before(new Date())) {
  34. // response.setStatus(403);
  35. // return false;
  36. // }
  37. // }
  38. // } catch (Exception e) {
  39. // response.setStatus(403);
  40. // return false;
  41. // }
  42. // }
  43. if (!subject.isAuthenticated()) {
  44. String token = request.getHeader("token");
  45. if (StringUtils.isNotEmpty(token)) {
  46. AppToken appToken = new AppToken(token);
  47. try {
  48. subject.login(appToken);
  49. } catch (Exception e) {
  50. e.printStackTrace();
  51. }
  52. }
  53. }
  54. response.addHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
  55. response.addHeader("Access-Control-Allow-Methods", "*");
  56. response.addHeader("Access-Control-Max-Age", "100");
  57. response.addHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, token");
  58. response.addHeader("Access-Control-Allow-Credentials", "true");
  59. return super.preHandle(request, response, handler);
  60. }
  61. }