场景描述:
@Component
@Slf4j
@Scope("prototype")
public class OAuth2Filter extends AuthenticatingFilter {
@Autowired
private ThreadLocalToken localToken;
@Value("${hrmanage.jwt.cache-expire}")
private int cacheExpire;
@Autowired
private RedisTemplate redisTemplate;
@Autowired
private JwtUtil jwtUtil;
/**
* 返回封装好的token对象
* @param servletRequest
* @param servletResponse
* @return
* @throws Exception
*/
@Override
protected AuthenticationToken createToken(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception {
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
String token = getRequestToken(httpServletRequest);
if(StrUtil.isBlank(token)){
return null;
}
return new OAuth2Token(token);
}
/**
* 放行options请求
* @param request
* @param response
* @param mappedValue
* @return
*/
@Override
protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) {
System.out.println("这是isAccessAllowed方法");
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
if (httpServletRequest.getMethod().equals(RequestMethod.OPTIONS.name())){
System.out.println("这是isAccessAllowed方法中的true");
return true;
}
System.out.println("这是isAccessAllowed方法中的true");
return false;
}
@Override
protected boolean onAccessDenied(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception {
System.out.println("这是onAccessDenied方法");
HttpServletRequest httpServletRequest = (HttpServ