我创建了一个Rails 5API应用程序。我已经为GET请求设置了返回JSON的方法。
数据只能由我来维护,因此我希望应用程序为所有类型的数据创建或更新请求返回401。我怎样才能做到这一点?
此外,如果我注释掉控制器文件中的data、def更新函数,我将如何使用POST请求更新和创建数据?
AIM:- 设置一个安全API,它只接受来自我的域的GET请求,否则返回401。 并在认证后手动接受发布、更新和删除请求。
发布于 2016-08-27 19:33:56
您需要为您的API设置令牌身份验证。要快速建立一个,您可以安装这个创业板:
只需按照说明设置身份验证系统即可。这样,您就可以控制谁通过身份验证来向您的API发出请求。
这个创业板是很棒的,因为在安装之后,您只需要做一些非常小的调整就可以让它正常工作,从而保护您的API。
你可能最终会在你的控制器上做这样的事情。
before_action: authenticate_user!, only: [:create, :update, ... Any other method you want to protect]`
编辑:详细说明
基本上你想保护你的一个或多个资源。您还希望使您的API成为无状态的,因此它不会保存任何会话数据。
一旦安装了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提出请求,请求的头必须包含一个UID、客户端和一个令牌。如果不包括这些,则将返回401状态作为响应。因此,保护您的API不受未经身份验证的请求的影响。
一些有用的教程:
1) 链接 2) link2
https://stackoverflow.com/questions/39184702
复制相似问题