11/08/2018, 23:12

Tìm hiểu về Gem Devise on Rails

I. Rails and Devise Devise được sử dụng cho việc xác thực và quản lý người dùng. Chỉ nên sử dụng trong trường hợp bạn là 1 developer đã có kinh nghiệm. Devise hỗ trợ 1 số tính năng : Navigation bar Sign up (create account) Login “Forgot password?” feature “Remember ...

I. Rails and Devise

  • Devise được sử dụng cho việc xác thực và quản lý người dùng. Chỉ nên sử dụng trong trường hợp bạn là 1 developer đã có kinh nghiệm. Devise hỗ trợ 1 số tính năng :
Navigation bar
Sign up (create account)
Login
“Forgot password?” feature
“Remember me” (stay logged in) feature
Admin?
Current_user ?
  • Cấu hình yêu cầu :
The Ruby language – version 2.1
The Rails gem – version 4.1
  • Generate :

Chạy lệnh dưới đây để cài đặt môi trường :

$ rails new rails-devise -m https://raw.github.com/RailsApps/rails-composer/master/composer.rb

2. Getting Started :

2.1 Use RVM

Nên sử dụng rvm để tạo 1 tập project-specific gemset cho ứng dụng.

2.2. Gems :

Các gem sử dụng trong app :

  • devise – xác thực và quản lý user :
. Database Authenticatable: bảo mật và lưu trữ password trong DB, kiểm tra validate khi login.
. Omniauthable: thêm Omniauth (https://github.com/intridea/omniauth) support.
. Confirmable: gửi email với confirmation instructions và thẩm tra tài khoản đã được xác nhận trong quá trình đăng nhập.
. Recoverable: reset user password và gửi reset instructions.
. Registerable: xử lý tiến trình đăng ký (sign up) đồng thời cho phép chỉnh sửa và xóa tài khoản user.
. Rememberable: tạo và xóa token cho việc ghi nhớ user cho cookie đã lưu.
. Trackable: theo dõi tài khoản, timestamps và địa chỉ IP.
. Timeoutable: cắt session mà không hoạt động trong 1 khoảng thời gian xác định.
. Validatable: cung cấp validation cho email and password.
. Lockable: khóa tài khoản sau 1 số lần đăng nhập không thành công xác định. Bỏ khóa qua email hoặc sau 1 khoảng thời gian nhất định.
  • Gems giúp đơn giản hóa lập trình :
better_errors – help khi có lỗi
quiet_assets – các thông báo trong log
rails_layout – tạo file cho layout
  • Chọn front-end framework:
bootstrap-sass – Bootstrap cho CSS và JavaScript
foundation-rails – Zurb Foundation cho CSS và JavaScript

3. Getting started :

Link tham khảo : https://github.com/plataformatec/devise

II. Ví dụ về Devise : xác thực user

  • Cài đặt Devise
gem sources -a http://gemcutter.org/
gem install devise

  • Thêm vào environment:
config.gem "warden", :version => "0.5.1"
config.gem "devise", :version => "0.4.1"

  • Cài gem :
script/generate devise_install

Nó sẽ khởi tạo trong config/initializers/devise.rb , hãy kiểm tra lại các tùy chọn của cấu hình devise, có 1 tính năng thêm từ phiên bản 0.1 : remember_for period (thời gian remember token hợp lệ).

  • Tiếp theo tạo model User :
script/generate devise User

Lệnh trên khởi tạo 1 model User và map.devise_for :users trong routes.rb. Trước khi thực hiện chỉ cần cấu hình default_url_options cho ActionMailer trong config/environments/development.rb

  • Cấu hình cho development :
config.action_mailer.default_url_options = { :host => 'localhost:3000' }

  • Hãy chắc chắn có ít nhất 1 route được đặt tên là root trong config/routes.rb (mặc định devise sẽ tìm kiếm user_root_path,nếu không định nghĩa root_path cho users):
map.root :controller => "your_controller"

  • Chạy migrations :
User.create!(:email => "your@email.com", :password => "secret")

Bây giờ khởi động server, tạo các account và chúng ta có thể đăng nhập.

  • Lệnh dưới đây có sẽ tạo 1 copy của tất cả devise views tới app của bạn bao gồm các file local cho cấu hình các flash mesage:
script/generate devise_views
0