有一種走偏了的感覺,會這麼說是因為手邊的事情讓我忙不過來,再加上技術文章果然沒有那麼容易理解 (太高估自己了) ,昨天的文章內容是抓著好夥伴、以及經驗滿滿的助教,問了好久才產出 ActionCable 的簡單原理文章。離題了,我想表達的是,我會堅持住不斷賽,但是實作部分可能等手邊的事告一段落後,再來進行 Side project 吧(望向遠方)
今天要來說的就是會員系統啦~
登入、登出的功能跟著教學手刻過,刻了好幾天,也花了不少時間理解,後來才知道有套件(GEM)可以用,看過文件也才會知道原來還有更多功能,自己手刻也是挺花時間的!
很感謝能站在巨人的肩膀上!主角就是 devise
,看看這驚人的總下載次數,已經算是 家喻戶曉 的套件了!
開啟GitHub,文件介紹這個套件中有 10 模組,有些可以彈性選擇:
Database Authenticatable
加密並儲存密碼於資料庫,當使用者登入時比對驗證身份。驗證機制可以透過 POST 請求或者 HTTP 基本的驗證方式。Omniauthable
支援 OmniAuth(https://github.com/intridea/omniauth)Confirmable
寄送 Email 驗證帳號是否啟用、並且確認會員是否已註冊過Recoverable
重設密碼與發送重新設定的通知信件Registerable
處理註冊流程,以及會員可編輯、刪除個人帳號Rememberable
管理 Token 的產生與清除,使用者的部分資訊會被存在客戶端的 cookie,(達成跳轉頁面時,不必一再登入)Trackable
追蹤登入的紀錄(次數,時間與 IP)Timeoutable
超過一定時間使用者未操作網站,sessions會過期Validatable
provides validations of email and password. It's optional and can be customized, so you're able to define your own validations.Validatable
提供信箱和密碼的驗證。此功能可以視情況客製化,自行定義驗證方式。Lockable
當帳號不斷登入失敗時會鎖住。同時發送 Email 來驗證解鎖。使用套件第一步驟就是安裝啦!(以及懷抱感恩的心)
編輯 Gemfile:
# Gemfile
gem 'devise', '~> 4.7', '>= 4.7.3'
記得安裝:
$ bundle install
產生devise設定檔:
$ rails generate devise:install
執行後,會有許多提示說明要進行的設定:
localhost
。config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
root to: "home#index"
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
$ rails generate devise:views
model 名稱可以彈性命名
$ rails g devise user | rails g devise admin
執行後 rails 會自動產生 migration、model、route 等。
我們剛剛有介紹 10 個模組,如果有想要特別的功能,資料表得有相關欄位來紀錄這些資料,因此開啟產生的migration檔案,20201008004616...
裡面有很多被註解的欄位,上面都有簡短的說明,選擇你要的部分取消註解!
編輯完之後,就可以產生資料表了~
$ rails db:migrate
學無止盡,每天都要進步一點點!
必須很努力,才能看起來毫不費力!