<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                # 微服務之間調用免Token方案 ## 常見需求 1. 微服務版,定時任務中,通過openfeign調用其他服務,報錯token失效 2. 微服務之間的feign調用,如何免登錄,同時又不會被暴露網關 ## 解決方案 >[info] 通過以下三步就可以解決無TOEKN服務之間調用問題。 1. 模擬登錄獲取臨時令牌TOKEN ``` /** * 獲取臨時令牌 * * 模擬登陸接口,獲取模擬 Token * @return */ public static String getTemporaryToken() { RedisUtil redisUtil = SpringContextUtils.getBean(RedisUtil.class); //模擬登錄生成臨時Token //參數說明:第一個參數是用戶名、第二個參數是密碼的加密串 String token = JwtUtil.sign("??", "??"); // 設置Token緩存有效時間為 5 分鐘 redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token); redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, 5 * 60 * 1000); return token; } ``` 2.在調用feign接口的前面加入下面代碼 ``` //1.設置線程會話Token UserTokenContext.setToken(getTemporaryToken()); ``` 3. 所有的feign調用結束后,調用刪除臨時令牌方法 ``` //2.使用完刪除Token,避免性能(這一步可以不做,但是為了性能建議執行) UserTokenContext.remove(); ``` > 示例代碼截圖: > ![](https://img.kancloud.cn/06/f2/06f23c372de1be7ae29bb48a375bca54_713x288.png) ## xxljob 完整代碼 ``` package org.jeecg.modules.demo.xxljob; import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.config.mqtoken.UserTokenContext; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.util.JwtUtil; import org.jeecg.common.util.RedisUtil; import org.jeecg.common.util.SpringContextUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * xxl-job定時任務測試 */ @Component @Slf4j public class TestJobHandler { @Autowired ISysBaseAPI sysBaseApi; /** * 簡單任務 * * @param params * @return */ @XxlJob(value = "testJob") public ReturnT<String> demoJobHandler(String params) { //1.設置線程會話Token UserTokenContext.setToken(getTemporaryToken()); log.info("我是 jeecg-demo 服務里的定時任務 testJob , 我執行了..............................."); log.info("我調用 jeecg-system 服務的字典接口:{}",sysBaseApi.queryAllDict()); //2.使用完刪除Token,避免性能 UserTokenContext.remove(); return ReturnT.SUCCESS; } public void init() { log.info("init"); } public void destroy() { log.info("destory"); } /** * 獲取臨時令牌 * * 模擬登陸接口,獲取模擬 Token * @return */ public static String getTemporaryToken() { RedisUtil redisUtil = SpringContextUtils.getBean(RedisUtil.class); // 模擬登錄生成Token String token = JwtUtil.sign("??", "??"); // 設置Token緩存有效時間為 5 分鐘 redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token); redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, 5 * 60 * 1000); return token; } } ``` ## 相關ISSUE * [https://gitee.com/jeecg/jeecg-boot/issues/I523YP](https://gitee.com/jeecg/jeecg-boot/issues/I523YP) * [https://gitee.com/jeecg/jeecg-boot/issues/I4Z69G](https://gitee.com/jeecg/jeecg-boot/issues/I4Z69G) * [https://github.com/jeecgboot/jeecg-boot/issues/2662](https://github.com/jeecgboot/jeecg-boot/issues/2662) * [https://gitee.com/jeecg/jeecg-boot/issues/I4Q7FY](https://gitee.com/jeecg/jeecg-boot/issues/I4Q7FY) * [https://github.com/jeecgboot/jeecg-boot/issues/2539](https://github.com/jeecgboot/jeecg-boot/issues/2539) * [https://github.com/jeecgboot/jeecg-boot/issues/2171](https://github.com/jeecgboot/jeecg-boot/issues/2171) * https://gitee.com/jeecg/jeecg-boot/issues/I4Q7FY ## 老版本手工修改 如果你的項目中沒有相關類,可以拷貝jeecgboot最新版代碼到自己項目中。 - 主要改動文件: ``` jeecg-boot-base/jeecg-boot-base-tools/org.jeecg.common.config.mqtoken.UserTokenContext jeecg-boot-starter\jeecg-boot-starter-cloud\src\main\java\org\jeecg\config\FeignConfig.java jeecg-boot-base\jeecg-boot-base-api\jeecg-system-cloud-api\src\main\java\org\jeecg\config\FeignConfig.java ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看