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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                可喜可賀,作為一個專業摸爬滾打的前端程序猿來說,第一次實現用`NodeJS`+`MySQL`數據庫開發接口,手動撒花撒花。 本項目學習為主,沒有采用express、koa等框架進行,所以在整個項目層次和處理繁瑣一些,整個項目層級抽離,仁者見仁智者見智吧。 * 采用技術棧:NodeJs + [MySQL](http://www.hmoore.net/vvmily_king/vvmily/2331779) + Git * ~~部署上線:pm2 + nginx~~ * Github地址:https://github.com/wwmingly/vvmily-node ### 1、前置條件 ***** * 拉取項目 git?clone?https://github.com/wwmingly/vvmily-node.git * 安裝依賴 ``` cd ./vvmily-node npm?install ``` * 數據庫([環境搭建](http://www.hmoore.net/vvmily_king/vvmily/2331779)),對應兩表 bloglist和 users以及對應的字段 key,練習數據庫表結構和數據(一般不這么干!!!)已導出存放在`mysql-table`文件中,需要可自行導入 ![](https://img.kancloud.cn/56/74/5674cb6216e83c18afab4a8d07ee2ada_277x491.png) ***** * 啟動數據庫,更多命令請點擊 [這里](http://www.hmoore.net/vvmily_king/vvmily/2331779) 查看 ``` net start mysql // 啟動 mysql -u root -p // 登錄 ``` * 啟動項目 ``` npm run dev npm run devmon // 熱更新 ``` * 等你啟動,看到下圖,項目搭建算是大功告成 ![](https://img.kancloud.cn/c2/07/c207fe688ef220a11b7ad2c47e8f93cc_628x288.png) * 項目接口測試,采用 Postman ### 2、項目學習 ***** * 項目模塊的拆分,形成單一的功能性文件,這不是我們所追求的么,如下每個文件對應的處理邏輯: ![](https://img.kancloud.cn/47/d2/47d2b99d7d5fb5868b65d9fb8ec25473_445x593.png) * 項目層級關系,每個層級只處理單一的邏輯,在我看來,學習每個技術時,首先明白數據如何一步步傳遞的,最終串聯起來,即可算進入使用階段,至于原理那么,需要更多的深入了,不多說,看圖: ![](https://img.kancloud.cn/b2/55/b2550bcb7b581caaf733945b4cadb983_814x340.png) 至此,剩下的就是每一步代碼實現了,可自行拉去查看。 ### 3、登錄檢驗 ***** * 登錄還是離不開cookie,既然是學習為主,我們可以在`req.headers.cookie`中獲取得到,并處理一下 注:每次請求都需要驗證cookie ![](https://img.kancloud.cn/05/0e/050ed16eb4b615d23f7b2084db47599d_459x265.png) * cookie在登錄成功時,設置 ``` // httpOnly: 不允許客戶端修改 // expires 過期時間(GMT格式) res.setHeader("Set-Cookie",`username=${username};?path=/;?httpOnly;?expires=${getCookieExpires()}`); ``` ``` const getCookieExpires = () => { const d = newDate(); d.setTime(d.getTime()?+1*60*60*1000);//?一個小時 return d.toGMTString(); }; ``` * 經過上面兩個步驟,在其他接口驗證處理時即可通過`req.cookie.username`等字段判斷是否已經登錄 * 當接口請求時,可更新`cookie`過期時間`expires`。 以上,基本可以實現登錄驗證,但是是否發現存在(信息安全)問題? 直接存放username在cookie中,是否存在隱患呢,接下來我們要解決這個問題 ### session ***** 首頁觀察`cookie`的`userId`屬性在`session`中是否為真,假則生成一個隨機數,真表示已經已經登錄 ``` let userId = req.cookie.userid; if?(userId)?{ needSetCookie = false; // 后面用于是否需要登錄驗證的接口 if?(!SESSION_DATA[userId])?{ SESSION_DATA[userId]?= {}; } }else{ needSetCookie = true; userId = `${Date.now()}_${Math.random()}`; // 隨機數 SESSION_DATA[userId]?= {}; } req.session = SESSION_DATA; ``` 完成以上步驟,即可在各個請求前通過`req.session.xxx`判斷了,每次請求完成,更新`cookie`時間哦![](https://img.kancloud.cn/9d/b9/9db932e26a234f0e9ecc1421b9837c33_820x150.png) 最后,我們定義的`cookie`,`session`等,都會占用內存,如果訪問量起來了,是否可以支撐呢?是否可以考慮`redis`等方式解決呢,后面作為一個擴展吧。
                  <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>

                              哎呀哎呀视频在线观看