Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Ruby on Rails

Khám phá Devise, Phần 1

Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Exploring Devise.
Exploring Devise, Part 2

Vietnamese (Tiếng Việt) translation by Dai Phong (you can also view the original English article)

Trong một số bài viết trước đây của tôi về upload hình ảnh trong Rails, tôi đã đề cập đến Devise nhưng không đi sâu vào nó. Trong hướng dẫn này, tôi sẽ dạy bạn về Devise.

Sẵn sàng chứ? Hãy bắt đầu thôi!

Giới thiệu Devise và các Mô-đun

Devise là một giải pháp xác thực cho Rails được tích hợp với Warden và được cung cấp bởi những người tuyệt vời tại Plataformatec. Devise cung cấp các mô-đun khác nhau:

  • Xác thực Cơ sở dữ liệu: Điều này mã hóa và lưu trữ một mật khẩu vào cơ sở dữ liệu để xác nhận tính xác thực của người dùng trong khi đăng nhập.
  • Xác thực với Omniauth: Điều này giúp cho OmniAuth có thể hỗ trợ cho Devise. Người dùng ứng dụng của bạn sẽ có thể đăng nhập bằng tài khoản như Facebook, Twitter và Google.
  • Xác nhận: Điều này cho phép việc gởi các email với các chỉ dẫn sẽ giúp xác nhận một tài khoản.
  • Khôi phục: Mô-đun này giúp những khi người dùng quên mật khẩu và cần phải khôi phục nó. Với điều này, thì người dùng sẽ có thể thiết lập lại mật khẩu.
  • Đăng ký: Điều này xử lý quá trình đăng ký của người dùng. Nó cũng cho phép người dùng chỉnh sửa và xoá các tài khoản của họ.
  • Khả năng nhớ: Mô-đun này làm cho ứng dụng của bạn có thể nhớ một người dùng đã đăng nhập bằng cách lưu trữ một cookie.
  • Theo dõi: Mô-đun này giúp theo dõi tài khoản đăng nhập, mốc thời gian, và địa chỉ IP.
  • Quá thời gian: Mô-đun này chịu trách nhiệm cho một phiên hết thời hạn mà đã không được kích hoạt trong một khoảng thời gian.
  • Kiểm tra hợp lệ: Với mô-đun này, email và mật khẩu sẽ được kiểm tra tính hợp lệ.
  • Khả năng khoá: Điều này cung cập một lớp phụ của bảo mật - khi được kích hoạt, một tài khoản có thể bị khoá sau một số lần cố gắng đăng nhập thất bại.

Tích hợp Devise

Với mục đích của hướng dẫn này, chúng ta sẽ tạo ra một ứng dụng Rails, mà chúng ta sẽ sử dụng để kiểm tra hoạt động của Devise. Hãy tiến hành thôi!

rails new devise-app -T

Cờ -T nói với Rails để tạo ra các ứng dụng mà không có bộ kiểm thử mặc định. Truy cập đến thư mục ứng dụng của bạn và thả các gem sau đây vào Gemfile của bạn.

Bây giờ cài đặt Devise và các gem Bootstrap mà bạn vừa mới thêm vào.

bundle install

Đổi tên tập tin app/assets/stylesheets/application.css thành app/assets/stylesheets/application.scss và thêm các dòng sau đây vào đó:

Mở tập tin app/assets/javascripts/application.js và yêu cầu bootstrap-sprockets. Nó sẽ trông như thế này:

Tiếp theo, bạn cần phải chạy lệnh Rails để cài đặt các tập tin cấu hình cho Devise. Bạn làm điều đó bằng cách chạy lệnh này:

rails generate devise:install

Lệnh tạo ra các thứ sau đây trên terminal của bạn. Bạn nên đọc nó để hiểu những gì đã xảy ra.

Lệnh này cũng tạo ra hai tập tin, mà bạn có thể tìm thấy trong thư mục config. Nó cũng cung cấp cho chúng ta một số chỉ dẫn về những gì chúng ta nên làm.

Điều hướng đến layout ứng dụng của bạn, app/views/layouts/application.html.erb, và làm cho nó trông giống như những gì tôi có ở dưới đây:

Bạn cần phải định nghĩa tùy chọn URL mặc định cho môi trường phát triển của bạn. Thêm code ở dưới vào config/environments/development.rb.

Bây giờ bạn cần tạo ra một model User cho Devise. Bạn có thể làm điều này bằng cách sử dụng terminal của bạn.

rails generate devise User

Việc này sẽ tạo ra một tập tin user.rb trong thư mục app/models của bạn. Tập tin được tạo ra sẽ trông giống như thế này:

Bạn có thể thấy rằng nó có chứa các mô-đun mặc định mà tôi đã đề cập ở trên. Lệnh mà bạn chạy cũng sửa đổi tập tin config/routes.rb của bạn bằng cách thêm một route cho Devise. Bạn nên kiểm tra đó.

Tại thời điểm này, bạn cần phải di chuyển cơ sở dữ liệu của bạn. Bạn làm điều đó bằng cách chạy:

rake db:migrate

Xác thực bằng cách sử dụng Devise

Bây giờ bạn cần tạo ra một PagesController và bao quanh nó bằng Devise authentication - điều này sẽ ngăn chặn những người không được phép nhìn thấy trang.

rails generate controller Pages index

Mở tập tin routes của bạn và thiết lập thư mục gốc của ứng dụng của bạn.

Mở PagesController của bạn ra và thêm sự xác thực cho trang index và new của bạn.

Đoạn mã chỉ ra rằng các trang indexnew chỉ có thể truy xuất bởi những người dùng đã đăng ký. Mở terminal của bạn và bắt đầu chạy rails server của bạn. Truy cập vào http://localhost:3000 trên trình duyệt và bạn sẽ tự động được chuyển hướng đến trang đăng nhập của Devise.

Đăng nhập mà không sử dụng Email

Theo mặc đinh các phương tiện đăng nhập vào Devise liên quan đến việc sử dụng email và mật khẩu. Nhưng nếu bạn muốn cho phép người dùng đăng nhập với username duy nhất của họ thì sao? Nếu đó là những gì bạn muốn, thì bạn hoàn toàn có thể. Chúng ta hãy xem cách làm thế nào.

Chạy lệnh:

rails generate migration AddUsernameToUSers username:string

Điều này sẽ thêm một cột mới cho username trong bảng users của bạn. Di chuyển cơ sở dữ liệu của bạn.

rake db:migrate

Bạn cần phải thêm một trường vào các view của bạn mà người dùng của bạn có thể nhập username của họ. Khi bạn truy cập đến thư mục app/views của bạn, bạn sẽ không tìm thấy bất kỳ tập nào kết xuất các view Devise của bạn. Điều này là bởi vì Devise tải các view từ bộ gem của nó. Để điều chỉnh nó, bạn có để tạo ra các bản sao của các view. Lệnh dưới đây thực hiện điều đó.

rails generate devise:views

Điều này sẽ tạo ra một số thư mục và tập tin trong thư mục app/views của bạn.

Bạn sẽ cần phải chỉnh sửa trang đăng nhập, đăng ký và cập nhật thông tin người dùng. Chỉ cần dán các đoạn mã dưới đây vào tập tin tương ứng của chúng.

Đăng ký

Chỉnh sửa

Đăng nhập

Sử dụng trình soạn thảo văn bản của bạn, điều hướng đến tập tin app/controllers/application_controller.rb. Bạn cần phải sửa đổi nó để cho phép việc sử dụng username. Sửa đổi nó sao cho trông giống như thế này:

Bây giờ người dùng có thể đăng nhập bằng username của mình. Tại thời điểm này, có một cái gì đó không đúng về ứng dụng của bạn. Khi người dùng đăng nhập vào, không có cách để đăng xuất. Điều này tạo ra hệ quả là một trải nghiệm người dùng không tốt. Tôi sẽ chỉ cho bạn cách khắc phục điều đó.

Từ terminal của bạn, tạo một thư mục mới gọi là shared trong thư mục app/views.

Tập tin mà bạn tạo ở trên là một phần nơi mà các mã cho thanh điều hướng của bạn sẽ được viết. Thả các mã sau đây vào đó.

Bây giờ bạn cần kết xuất thanh điều hướng trong layout ứng dụng của bạn. Mở tập tin app/views/layouts/application.html.erb và thả vào đó đoạn mã để kết xuất thanh điều hướng của bạn.

Tổng kết

Trong phần này bạn đã học cách cài đặt Devise và thêm sự chứng thực vào trong các trang của bạn. Tôi cũng đã đề cập đến một bộ phận riêng. Tôi sẽ bao quát nó trong một bài hướng dẫn riêng.

Trong phần tiếp theo, chúng ta sẽ bao quát sâu hơn một số phần. Tôi hy vọng điều này xứng đáng với thời gian mà bạn đã bỏ ra!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.