0
0
Lập trình
Admin Team
Admin Teamtechmely

Hướng Dẫn Tính Năng Xác Thực Mới Trong Rails 8

Đăng vào 1 tháng trước

• 3 phút đọc

Chủ đề:

RailsRails 8Ruby

Giới Thiệu

Rails 8 đã chính thức ra mắt và mang đến một số tính năng thú vị, trong đó nổi bật nhất là tính năng xác thực được tích hợp sẵn mà được chính DHH (David Heinemeier Hansson) phát triển. Trong bài viết này, chúng ta sẽ khám phá cách sử dụng tính năng xác thực này, cùng với các bước cần thực hiện để thiết lập môi trường.

Tổng Quan Về Tính Năng Xác Thực

Trong bản cập nhật này, Rails đã cung cấp một generator cho phép chúng ta dễ dàng thiết lập hệ thống xác thực cơ bản với phiên làm việc được theo dõi bằng cơ sở dữ liệu và khả năng đặt lại mật khẩu. Bạn có thể tạo xác thực bằng lệnh:

bash Copy
bin/rails generate authentication

Khi chạy lệnh trên, hệ thống sẽ tự động sinh ra các file cần thiết cho chức năng xác thực, bao gồm các model, controller, view và migration.

Thiết Lập Dự Án Rails 8

Để bắt đầu, trước tiên bạn cần tạo một dự án Rails 8 mới. Bạn có thể sử dụng RubyMine, một IDE tuyệt vời cho Ruby, để khởi tạo mà không cần sử dụng terminal. Chỉ cần:

  1. Mở RubyMine.
  2. Chọn "File" > "New" > "Project".
  3. Nhập tên dự án, đường dẫn, chọn phiên bản Ruby và Rails, cũng như loại database bạn muốn sử dụng.
  4. Chọn importmap cho JavaScript hoặc một số tùy chọn khác tùy theo nhu cầu của bạn.

Hãy chắc chắn đưa thư mục .idea vào file .gitignore để giữ cho repository của bạn sạch sẽ.

Cấu Trúc File Được Tạo Ra

Khi chạy lệnh sinh ra xác thực, các file sau sẽ được tạo:

  • app/models/current.rb
  • app/models/user.rb
  • app/models/session.rb
  • app/controllers/sessions_controller.rb
  • app/controllers/passwords_controller.rb
  • app/mailers/passwords_mailer.rb
  • app/views/sessions/new.html.erb
  • app/views/passwords/new.html.erb
  • app/views/passwords/edit.html.erb
  • app/views/passwords_mailer/reset.html.erb
  • app/views/passwords_mailer/reset.text.erb
  • db/migrate/xxxxxxx_create_users.rb
  • db/migrate/xxxxxxx_create_sessions.rb
  • test/mailers/previews/passwords_mailer_preview.rb

Phân Tích Cấu Trúc Xác Thực

Models & Migrations

Chúng ta có 3 model được sinh ra như sau:

  1. User: bao gồm trường email_address là duy nhất và password_digest để lưu trữ mật khẩu.
  2. Session: chứa trường token, ip_address, và user_agent để ghi lại thông tin phiên làm việc.
  3. Current: giúp quản lý trạng thái người dùng hiện tại.

Gem bcrypt sẽ được sử dụng để mã hóa mật khẩu.

Logic Xác Thực

Tất cả logic liên quan đến xác thực đều được đưa vào phần Authentication concern:

  • require_authentication: xác minh phiên làm việc.
  • resume_session: khôi phục phiên làm việc từ cookie.
  • authenticated?: kiểm tra trạng thái xác thực của người dùng.
  • start_new_session_for(user): khởi tạo phiên làm việc mới cho người dùng.
  • terminate_session: hủy phiên làm việc hiện tại.

Controller

Để tích hợp xác thực vào ứng dụng, trong ApplicationController, bạn cần thêm:

ruby Copy
include Authentication

Còn trong các controller khác, bạn có thể sử dụng các callback tương ứng như require_authentication để kiểm soát những gì cần xác thực.

Hạn Chế Hiện Tại

Hiện tại, tính năng xác thực này đã hoạt động tốt nhưng chưa bao gồm chức năng đăng ký người dùng mới. Bạn có thể cần tạo các route như sau:

ruby Copy
resource :session
resources :passwords, param: :token

Để tạo link đăng ký, bạn có thể cần tùy chỉnh lại route cho phù hợp.

Kết Luận

Tính năng xác thực mới trong Rails 8 hứa hẹn sẽ là lựa chọn thay thế cho các gems xác thực hiện tại như Devise. Dù vẫn cần phát triển thêm, nhưng đây là bước tiến lớn giúp các lập trình viên thuận tiện hơn trong việc xây dựng ứng dụng.

Chúng ta hãy cùng chờ đợi các bản cập nhật tiếp theo để xem tính năng này sẽ phát triển ra sao.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào