安全 Rails 5 API
Secure Rails 5 API
我创建了一个 Rails 5 API 应用程序。我已将 GET 请求的方法设置为 return JSON。
数据仅由我维护,因此我希望应用程序对所有类型的数据创建或更新请求 return 401。 我怎样才能做到这一点?
此外,如果我在控制器文件中注释掉 def create、def update 函数,我将如何使用 POST 请求更新和创建数据?
AIM:-
Set up a secure API which accepts GET requests only from my domain and return 401 otherwise.
And accept POST, UPDATE and DELETE requests manually after authentication.
您需要为您的 API 设置令牌身份验证。要快速设置一个,您可以安装此 gem:
只需按照说明设置您的身份验证系统即可。这样您就可以控制谁经过身份验证可以向您的 API.
发出请求
这个 gem 太棒了,因为在安装后你只需要做一些非常小的调整就可以让它工作,因此,保护你的 API.
你最终可能会在你的控制器中做这样的事情
before_action: authenticate_user!, only: [:create, :update, ... Any other method you want to protect]`
编辑:详细说明
基本上您想保护您的一种或多种资源。您还需要使 API 无状态,因此它不会保存任何 session 数据。
安装 gem 后,您应该 运行:
rails g devise_token_auth:install User auth
这将创建一个用户模型,调整您的 routes.rb 以安装身份验证模块并创建迁移。
那你就得rails db:migrate
正如我所说,有很多方法可以保护您的资源,但最常见的方法之一是 运行 authenticate_user!在您的控制器中的 before_action 上:
before_action: authenticate_user!, only: [:create, :update, ... Any other method you want to protect]
基本上,从现在开始,用户对您的受保护方法发出的每个请求都需要经过身份验证。
我建议您阅读更多关于身份验证和 API 的内容。但是,基本上从现在开始,要向您的 API 发出请求,请求的 headers 将必须包含 UID、客户端和令牌。 如果它们不包括这些,将返回 401 状态作为响应。因此,保护您的 API 免受未经身份验证的请求。
一些有用的教程:
我创建了一个 Rails 5 API 应用程序。我已将 GET 请求的方法设置为 return JSON。
数据仅由我维护,因此我希望应用程序对所有类型的数据创建或更新请求 return 401。 我怎样才能做到这一点?
此外,如果我在控制器文件中注释掉 def create、def update 函数,我将如何使用 POST 请求更新和创建数据?
AIM:-
Set up a secure API which accepts GET requests only from my domain and return 401 otherwise.
And accept POST, UPDATE and DELETE requests manually after authentication.
您需要为您的 API 设置令牌身份验证。要快速设置一个,您可以安装此 gem:
只需按照说明设置您的身份验证系统即可。这样您就可以控制谁经过身份验证可以向您的 API.
发出请求这个 gem 太棒了,因为在安装后你只需要做一些非常小的调整就可以让它工作,因此,保护你的 API.
你最终可能会在你的控制器中做这样的事情
before_action: authenticate_user!, only: [:create, :update, ... Any other method you want to protect]`
编辑:详细说明
基本上您想保护您的一种或多种资源。您还需要使 API 无状态,因此它不会保存任何 session 数据。
安装 gem 后,您应该 运行:
rails g devise_token_auth:install User auth
这将创建一个用户模型,调整您的 routes.rb 以安装身份验证模块并创建迁移。
那你就得rails db:migrate
正如我所说,有很多方法可以保护您的资源,但最常见的方法之一是 运行 authenticate_user!在您的控制器中的 before_action 上:
before_action: authenticate_user!, only: [:create, :update, ... Any other method you want to protect]
基本上,从现在开始,用户对您的受保护方法发出的每个请求都需要经过身份验证。
我建议您阅读更多关于身份验证和 API 的内容。但是,基本上从现在开始,要向您的 API 发出请求,请求的 headers 将必须包含 UID、客户端和令牌。 如果它们不包括这些,将返回 401 状态作为响应。因此,保护您的 API 免受未经身份验证的请求。
一些有用的教程: