<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>

                [TOC] # 前后端分離 >前后端分離并不只是開發模式,而是web應用的一種架構模式。在開發階段,前后端工程師約定好數據交互接口,實現并行開發和測試;在運行階段前后端分離模式需要對web應用進行分離部署,前后端之前使用HTTP或者其他協議進行交互請求。 **1\. 客戶端和服務端采用RESTFul API的交互方式進行交互** ![](https://box.kancloud.cn/10babc06cff5cf740ae0dc3f6340315b_924x478.png) **2.?前后端代碼庫分離** ![](https://box.kancloud.cn/22c3ecc48ba64f76de77d9772240065e_947x288.png) # 后臺中心 * 代碼結構 ![](https://box.kancloud.cn/8a9a40e6fa40b5850a6018f5f5917e91_590x398.png) * 指定網關地址 ![](https://img.kancloud.cn/55/36/553650a8d560c06fba0b3a16f1ec0746_1760x562.png) * ajax請求json數據時,帶上token ![](https://box.kancloud.cn/26883e329fb6a03b6efc88841265b85e_1741x659.png) * 渲染table時,請求參數帶上token ![](https://box.kancloud.cn/6932f04d2e91fd9f1b78bf817bcf9141_1746x716.png) * token無效處理 ![](https://box.kancloud.cn/76811a414d0fa4206d4e5b83ab18c029_1666x630.png) * 菜單鏈接 ![](https://img.kancloud.cn/ad/90/ad90812084abb1d03f358302f68215ea_1320x627.png) * 路由綁定url ![](https://img.kancloud.cn/5a/c9/5ac97a2b1060c9bad68c7f443db6036a_1542x554.png) # 登錄請求 ``` $.ajax({ url: config.base_server + 'api-auth/oauth/token', //url: 'http://127.0.0.1:8000/oauth/token', data: field, type: 'POST', //dataType: 'JSON', success: function (data) { console.log(JSON.stringify(data)); if (data.access_token) { config.putToken(data); layer.msg('登錄成功', {icon: 1, time: 500}, function () { location.replace('./'); }); } else { layer.closeAll('loading'); layer.msg('登錄失敗,請重試', {icon: 5, time: 500}); } }, error: function (xhr) { layer.closeAll('loading'); if (xhr.status == 400) { layer.msg('賬號或密碼錯誤', {icon: 5, time: 500}); }else if( xhr.status == 500){ layer.msg('服務器異常,請聯系管理員', {icon: 5, time: 500}); }else if( xhr.status == 0){ layer.msg('網關異常,請聯系管理員', {icon: 5, time: 900}); } } }); ``` # 前端按鈕權限 ![](https://box.kancloud.cn/b05bdd9aa3b4a05415e86163dd37d2e0_981x530.png) ## 登錄完整鏈路信息 ![](https://box.kancloud.cn/0b8dbd349265ec3b83bdca7764e72d99_1651x777.png) 由api-gateway --> auth-server的/oauth/token -->user-center -->db
                  <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>

                              哎呀哎呀视频在线观看