Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Ruby

Xác Thực Rails An Toàn với Clearance: Hướng Dẫn Bước Đi Bước

Clearance là hệ thống xác thực đơn giản với email và mật khẩu do đội ngũ Thoughtbot xây dựng. Nó có các mặc định theo quan điểm nhưng dễ dàng ghi đè. Hệ thống được duy trì tích cực, bạn có thể theo dõi trên GitHub.

Trong hướng dẫn này, bạn sẽ thấy cách tích hợp Clearance vào ứng dụng Rails. Chúng ta sẽ dùng một ứng dụng nhỏ. Hãy bắt đầu!

Bắt Đầu

Khởi tạo bằng cách tạo ứng dụng Rails. Cho hướng dẫn này, tôi đặt tên tutsplus-clearance.

Đó sẽ làm việc.

Cần bootstrap để app đẹp hơn. Thêm gem Bootstrap vào Gemfile.

Cài gem bằng bundle install.

Sửa application.scss thành:

Thiết Lập Clearance

Mở Gemfile thêm gem Clearance.

Cài gem:

Lúc này, chạy lệnh generator cài clearance:

Sẽ xuất ra terminal kết quả như sau:

Khi chạy lệnh, vài file được sinh ra. Một file là clearance.rb trong thư mục config/initializers. Model User cũng được sinh, cùng migration file như sau:

Theo output, việc đầu tiên là chỉnh config environment. Vào config/environments/development.rb thêm dòng sau, ngay trước delimiter end.

Tiếp, vào config/initializers/clearance.rb sửa, đổi email sender từ mặc định sang email bạn chọn. File mặc định như sau:

Bạn có thể ghi đè cấu hình mặc định bằng đoạn code sau và config theo yêu cầu:

Chạy lệnh migrate database:

Mở PagesController thêm action index:

Tạo view cho action index vừa tạo.

Thêm code snippet:

Sửa routes thành:

Tạo partial _navigation.html.erb trong thư mục layouts. Partial này xử lý mọi thứ liên quan điều hướng trong app.

Dán code sau và lưu:

Truy Cập Hạn Chế (Restricted Access)

Với Clearance, bạn có thể tạo truy cập hạn chế đến các trang cụ thể trong ứng dụng. Hãy xem cách làm.

Tạo view cho action new trong app/views/pages, tên file new.html.erb. Dán code sau:

Thêm dòng sau vào config/routes.rb:

Cuối cùng, vào PagesController làm như sau:

Ở trên dùng helper require_login của Clearance để hạn chế truy cập action new. Để test, chạy rails server bằng rails server từ terminal. Truy cập https://localhost:3000/pages/new sẽ chuyển hướng đến trang sign in.

Clearance cũng cung cấp routing constraints để kiểm soát truy cập.

Code trên tạo route khác cho user đã xác thực.

Ghi Đè Mặc Định Clearance

Nhiều thứ xảy ra ngầm khi dùng Clearance, những thứ bạn không thấy. Có lúc bạn muốn tùy chỉnh khác tùy spec ứng dụng. Clearance cho phép ghi đè cấu hình mặc định.

Để ghi đè (hoặc generate) routes Clearance, chạy lệnh từ terminal:

File routes giờ sẽ như sau:

Lệnh cũng set config.routes thành false trong config/initializers/clearance.rb. Nghĩa là file custom vừa sinh sẽ được dùng.

Để generate views để sửa đổi, chạy:

Một số file sẽ sinh ra:

Sẽ có prompt trong terminal hỏi ghi đè app/views/layouts/application.html.erb. Chọn tùy chọn bạn muốn.

Layouts

Mặc định Clearance dùng layout mặc định của app. Nếu muốn đổi layout Clearance dùng khi render views, chỉ định layout trong initializer.

Helper Methods

Clearance cung cấp helper methods dùng trong controllers, views, helpers. Các method bao gồm signed_in?, signed_out?, current_user. Ví dụ:

Kết Luận

Clearance cung cấp nhiều tính năng cho xác thực, hãy thử dùng cho dự án tiếp theo. Tìm hiểu thêm tại trang GitHub.