场景:
springboot项目整合了springSecurity,所有的controller接口都需要认证通过才能访问。
现在需要对接第三方接口,接收第三方推送的数据。然而第三方推送接口的数据是固定的,不能传认证信息。
在这样的情况下,我们如何接收第三方推送的数据?
(注: springSecurity的相关配置不能改动)
方案一: 另外构建一个项目,专门接收第三方数据。
方案二: 在原项目中添加过滤器,先执行该过滤器后执行springSecurity认证,在过滤器中添加认证信息,使得数据推送通过认证。
方案二代码:
package com.rsh.filter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.io.IOException;
/**
* 过滤器
*
*/
//Order的值越小,优先级越高,
//所以这里为了确保先执行,order给了最高优先级,
//也就是integer的最小值
@Order(Ordered.HIGHES