Securing Rails api với Rails 5 và Devise Auth Token

logo.jpg

Bài viết này mình sẽ hướng dẫn tạo và setting cơ bản cho Securing Rails apis with Rails 5 and Devise Auth Token.

Rails không chỉ là sự lựa chọn hoàn hảo khi bạn muốn xây dựng một ứng dụng full-stack, mà với phiên bản 5.0, Rails còn có khả năng xây dựng ứng dụng backend trả về JSON, cắt bỏ code phía client. Rails 5 giờ còn giúp cho công việc này trở nên dễ dàng hơn với -api mode

Create a new app

rails new my_api_app --api

sẽ tạo ra ứng dụng Rails để bạn làm việc với JSON, chứ không phải là HTML.

Chúng ta sẽ cài thêm các gem

 gem "omniauth"
 gem "devise_token_auth"

Cài đặt các gem vừa thêm vào ở trên bằng cách chạy lệnh: bundle install

Bây giờ, chúng ta generate User model, sử dụng token authentication.

 rails g devise_token_auth:install User auth

Các file được tạo ra:

 create  config/initializers/devise_token_auth.rb
  create  db/migrate/20161021153426_devise_token_auth_create_users.rb
  create  app/models/user.rb
  insert  app/controllers/application_controller.rb
    gsub  config/routes.rb

sau đó chạy lệnh.

rails db:migrate

Ta thêm dòng này vào trong file routes.rb

 mount_devise_token_auth_for 'User', at: 'auth'

Các bạn có thể tham khảo thêm chi tiết gem devise_token_auth

Ta sử dụng Postman để test API

Cài đặt ứng dụng Postman: https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop

Chúng ta chạy rails server.

rails s

chúng ta bỏ chức năng Confirmable của user ta sẽ có kết quả như thế này:

signup.png

sign_in.png

Tài liệu tham khảo

https://github.com/lynndylanhurley/devise_token_auth#mounting-routes