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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 8.5 小結 這兩章我們介紹了很多基礎知識,也為稍顯簡陋的應用實現了注冊和登錄功能。實現用戶認證功能后,我們可以根據登錄狀態和用戶的身份限制對特定頁面的訪問權限。我們會在[第 9 章](chapter9.html#updating-showing-and-deleting-users)實現編輯用戶個人信息的功能。 在繼續之前,先把本章的改動合并到 `master` 分支: ``` $ bundle exec rake test $ git add -A $ git commit -m "Finish log in/log out" $ git checkout master $ git merge log-in-log-out ``` 然后再推送到遠程倉庫和生產服務器: ``` $ bundle exec rake test $ git push $ git push heroku $ heroku run rake db:migrate ``` 注意,推送后應用基本上處于不可用狀態,不過執行遷移之后就沒問題了。在擁有巨大流量的線上網站中,更新前最好開啟[維護模式](https://devcenter.heroku.com/articles/maintenance-mode): ``` $ heroku maintenance:on $ git push heroku $ heroku run rake db:migrate $ heroku maintenance:off ``` 這樣,在部署和執行遷移期間會顯示一個標準的錯誤頁面。詳情參見 Heroku 文檔中對[錯誤頁面](https://devcenter.heroku.com/articles/error-pages)的說明。 ## 8.5.1 讀完本章學到了什么 * Rails 可以使用臨時 cookie 和持久 cookie 維護頁面之間的狀態; * 登錄表單的目的是創建新會話,登入用戶; * `flash.now` 方法用于在重新渲染的頁面中顯示閃現消息; * 在測試中重現問題時可以使用測試驅動開發; * 使用 `session` 方法可以安全地在瀏覽器中存儲用戶 ID,創建臨時會話; * 可以根據登錄狀態修改功能,例如布局中顯示的鏈接; * 集成測試可以檢查路由、數據庫更新和對布局的修改; * 為了實現持久會話,我們為每個用戶生成了記憶令牌和對應的記憶摘要; * 使用 `cookies` 方法可以在瀏覽器的 cookie 中存儲一個永久記憶令牌,實現持久會話; * 登錄狀態取決于有沒有當前用戶,而當前用戶通過臨時會話中的用戶 ID 或持久會話中唯一的記憶令牌獲取; * 退出功能通過刪除會話中的用戶 ID 和瀏覽器中的持久 cookie 實現; * 三元操作符是編寫簡單 `if-else` 語句的簡潔方式。
                  <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>

                              哎呀哎呀视频在线观看