iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 23
1
自我挑戰組

關於 Ruby on Rails 的那些事系列 第 23

Day 23 - Devise 會員系統 - 壹

  • 分享至 

  • xImage
  •  

有一種走偏了的感覺,會這麼說是因為手邊的事情讓我忙不過來,再加上技術文章果然沒有那麼容易理解 (太高估自己了) ,昨天的文章內容是抓著好夥伴、以及經驗滿滿的助教,問了好久才產出 ActionCable 的簡單原理文章。離題了,我想表達的是,我會堅持住不斷賽,但是實作部分可能等手邊的事告一段落後,再來進行 Side project 吧(望向遠方)

今天要來說的就是會員系統啦~
登入、登出的功能跟著教學手刻過,刻了好幾天,也花了不少時間理解,後來才知道有套件(GEM)可以用,看過文件也才會知道原來還有更多功能,自己手刻也是挺花時間的!

很感謝能站在巨人的肩膀上!主角就是 devise ,看看這驚人的總下載次數,已經算是 家喻戶曉 的套件了!

開啟GitHub,文件介紹這個套件中有 10 模組,有些可以彈性選擇:

  1. Database Authenticatable 加密並儲存密碼於資料庫,當使用者登入時比對驗證身份。驗證機制可以透過 POST 請求或者 HTTP 基本的驗證方式。
  2. Omniauthable 支援 OmniAuth(https://github.com/intridea/omniauth)
  3. Confirmable 寄送 Email 驗證帳號是否啟用、並且確認會員是否已註冊過
  4. Recoverable 重設密碼與發送重新設定的通知信件
  5. Registerable 處理註冊流程,以及會員可編輯、刪除個人帳號
  6. Rememberable 管理 Token 的產生與清除,使用者的部分資訊會被存在客戶端的 cookie,(達成跳轉頁面時,不必一再登入)
  7. Trackable 追蹤登入的紀錄(次數,時間與 IP)
  8. Timeoutable 超過一定時間使用者未操作網站,sessions會過期
  9. Validatable provides validations of email and password. It's optional and can be customized, so you're able to define your own validations.
  10. Validatable 提供信箱和密碼的驗證。此功能可以視情況客製化,自行定義驗證方式。
  11. Lockable 當帳號不斷登入失敗時會鎖住。同時發送 Email 來驗證解鎖。

step 1 安裝

使用套件第一步驟就是安裝啦!(以及懷抱感恩的心)

編輯 Gemfile:

# Gemfile

gem 'devise', '~> 4.7', '>= 4.7.3'

記得安裝:

$ bundle install

產生devise設定檔:

$ rails generate devise:install

執行後,會有許多提示說明要進行的設定:

  1. 確認 config/environments/development.rb 和 production.rb 要提供寄信時預設的網站網址(例如:搭配 action mailer 可以達成註冊時的信件驗證)
    • development.rb 開發階段可以使用本地的網址,localhost
    • 而 production.rb 是上線的產品,請用正式的網址!
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
  1. 確認 routes.rb 中有設定網站首頁位置
root to: "home#index"
  1. 確認 app/views/layouts/application.html.erb layout 中可以顯示 flash 訊息
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
  1. 開發者可以客製化想要的畫面 (也許你不想要客製化) ,輸入下方指令即產生HTML的樣板,包括註冊、登入、忘記密碼等相關頁面,檔案會放在 app/views/devise 資料夾中
$ rails generate devise:views

step 2 產生 model

model 名稱可以彈性命名

$ rails g devise user | rails g devise admin

執行後 rails 會自動產生 migration、model、route 等。
我們剛剛有介紹 10 個模組,如果有想要特別的功能,資料表得有相關欄位來紀錄這些資料,因此開啟產生的migration檔案,20201008004616...

裡面有很多被註解的欄位,上面都有簡短的說明,選擇你要的部分取消註解!
編輯完之後,就可以產生資料表了~

$ rails db:migrate

參考資料:
GitHub-devise
Devise 快速上手

學無止盡,每天都要進步一點點!

必須很努力,才能看起來毫不費力!


上一篇
Day 22 - RoR 如何實現即時通訊「ActionCable」- 下集
下一篇
Day 24 - Devise 會員系統 - 貳
系列文
關於 Ruby on Rails 的那些事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言