Securing Rails api với Rails 5 và Devise Auth Token
Bài đăng này đã không được cập nhật trong 3 năm
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
-
Ví dụ với Sign Up
Request_type – Post,
Request_url - http://localhost:3000/auth
chúng ta bỏ chức năng Confirmable của user ta sẽ có kết quả như thế này:
-
Ví dụ với Sign In
Request_type – Post
Request_url - http://localhost:3000/auth/sign_in.json
Tài liệu tham khảo
https://github.com/lynndylanhurley/devise_token_auth#mounting-routes
All rights reserved