0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Hướng Dẫn Sử Dụng has_secure_password Trong Ứng Dụng Rails

Đăng vào 3 tuần trước

• 3 phút đọc

Hướng Dẫn Sử Dụng has_secure_password Trong Ứng Dụng Rails

1. has_secure_password Là Gì Và Tại Sao Cần Sử Dụng Nó?

Khi xây dựng một ứng dụng, việc xác thực người dùng là rất quan trọng. has_secure_password giúp bạn thực hiện điều này một cách dễ dàng và hiệu quả. Bài viết này sẽ cung cấp cho bạn cái nhìn tổng quan về những chức năng chính mà nó mang lại và cách áp dụng trong ứng dụng của bạn. Hãy cảm thấy tự do để lại bình luận ở bên dưới nếu bạn có bất kỳ câu hỏi nào.

2. Cách Cài Đặt has_secure_password

Để cài đặt has_secure_password, bạn cần thêm dòng sau vào model của mình. Đồng thời, đừng quên thêm gem bcrypt để mã hóa mật khẩu.

ruby Copy
gem 'bcrypt', '~> 3.1.7'

Sau khi cài đặt gem bcrypt, bạn cần tạo model mới với các trường cần thiết. Theo tài liệu hướng dẫn của Rails, bạn phải thêm cột với định dạng là XXX_digest. Ví dụ sau đây có thể giúp bạn dễ dàng điền vào các cột cần thiết:

bash Copy
rails g model User email:string password_digest:string recovery_password_digest:string password_challenge:string

Cột password_digest sẽ lưu trữ mật khẩu đã được mã hóa, trong khi các cột khác sẽ phục vụ cho các chức năng đặc biệt mà chúng ta sẽ thảo luận sau.

3. Những Chức Năng Chính Của has_secure_password

Mã hóa và Xác Thực Mật Khẩu

has_secure_password cung cấp cho bạn hai thuộc tính ảo là passwordpassword_confirmation, cùng với các phương thức để xác thực mật khẩu người dùng.

ruby Copy
user = User.new(email: "email@gmail.com", password: "123456", password_confirmation: "")
user.save # false, vì password confirmation không hợp lệ

user.password_confirmation = "123456"
user.save # true

user.authenticate("invalid_password") # false
user.authenticate("123456") # user

Như vậy, bạn có thể sử dụng phương thức authenticate để kiểm tra tính hợp lệ của mật khẩu khi người dùng đăng nhập.

Khôi Phục Mật Khẩu

Một tính năng phổ biến khác mà ứng dụng nào cũng cần có là chức năng quên mật khẩu. Khi người dùng nhấn vào nút "Quên mật khẩu", bạn tạo ra một recovery_password, có thể là một chuỗi ngẫu nhiên.

ruby Copy
user.recovery_password = "42password"
yser.recovery_password_digest                                  # => "$2a$04$iOfhwahFymCs5weB3BNH/uXkTG65HR.qpW.bNhEjFP3ftli3o5DQC"
user.save                                                      # => true

Sau khi gửi mã khôi phục mật khẩu qua email, người dùng chỉ cần nhập mã này để xác thực và cập nhật mật khẩu mới.

ruby Copy
user.authenticate_recovery_password("42password")              # => user

Cập Nhật Mật Khẩu Với Thách Thức Mật Khẩu

Khi người dùng cập nhật mật khẩu, bạn có thể kiểm tra xem họ có đang sử dụng mật khẩu cũ hay không.

ruby Copy
user.update!(password: "new_password", password_confirmation: "new_password")

Để đảm bảo tính an toàn, bạn có thể yêu cầu người dùng nhập password_challenge - mật khẩu cũ của họ:

ruby Copy
user.update(password: "new_password", password_challenge: "old_password")

Việc này không chỉ giúp ngăn chặn việc sử dụng lại mật khẩu cũ mà còn cung cấp cách để khôi phục tài khoản khi có sự cố xảy ra.

Kết Luận

has_secure_password không chỉ giúp bạn mã hóa mật khẩu một cách an toàn mà còn mang lại nhiều chức năng hỗ trợ xác thực người dùng hiệu quả trong ứng dụng Rails của bạn. Với những hướng dẫn và ví dụ cụ thể trên đây, hy vọng bạn có thể dễ dàng áp dụng vào dự án của mình.
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