feign攜帶token;springboot多模塊直接攜帶認證信息調用參數;shiro/url過濾


場景:

security模塊、system模塊;打成一個jar包,security通過shiro進行登錄驗證;

業務:

第一步:登陸;

第二步:請求security中queryUser()接口,然后queryUser()接口會調用system模塊中的某一個類,比如queryLic();

問題:

因為模塊之間是通過feign連接的,也就是http請求,所以每一個url都會走security的shiro驗證,但是在第二步驗證的時候會出現獲取不到登陸信息的情況;

解決方法:

feign中可以攜帶token信息,帶上去進行驗證;

在security添加配置類:

import javax.servlet.http.HttpServletRequest;

/**
 * 跨模塊獲取登錄信息
 * author shichangle
 * date 2020/2/20 0020 16:11
 */
@Configuration
public class FeignConfig implements RequestInterceptor {
    @Override
    public void apply(RequestTemplate requestTemplate) {
        ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();

        HttpServletRequest request = requestAttributes.getRequest();
        requestTemplate.header("postman-token",request.getHeader("postman-token"));
        requestTemplate.header("cookie",request.getHeader("cookie"));
    }
}

 

具體shiro認證代碼:

     
    //獲取當前登陸用戶信息
    Subject subject = SecurityUtils.getSubject(); String header = ((HttpServletRequest) request).getHeader("Access-Token"); if (!subject.isAuthenticated()) { logger.error("未登錄"); return false; }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM