我可以在没有凭据的情况下向应用程序发送请求吗?
Can I send requests to app with devise without credentials?
我有一个带有设计的后端应用程序和一个离子应用程序,我从中向后端发出请求。
每当我发送请求时,都会显示 401 状态未授权。
在这个项目中,我已经有门卫来管理授权,所以我不需要设计授权。
我能以某种方式让这些请求(添加一些东西到 headers )总是授权而不发送 post 请求凭据?
您需要以某种方式识别用户。如果您不使用会话,则需要生成某种访问令牌,Doorkeeper 可以为您做这件事。我不确定这是否有帮助,但我最近设置了以下流程。
通过受信任的客户端使用 OAuth2 时的一个选项,例如您 build/distribute 自己的前端应用程序是 资源所有者密码凭证授予 。 Doorkeeper 对此有一个 guide in the docs,并提供了处理 Devise 的建议。
我在我的 Doorkeeper 初始化程序中得到了类似的东西。您不需要授权客户端,因为您信任它:
resource_owner_from_credentials do |routes|
request.params[:user] = {:email => request.params[:email], :password => request.params[:password]}
request.env['devise.allow_params_authentication'] = true
request.env['warden'].authenticate!(:scope => :user)
end
skip_authorization do |resource_owner|
true
end
然后您应该能够使用密码授予类型发送请求,如下所示(也在文档中显示)。
RestClient.post 'http://localhost:3000/oauth/token', {grant_type: 'password', email: 'email@gmail.com', password: 'password'}, {:accept => 'application/json'}
您应该会收到与文档中所示相同的 JSON 回复。
{
"access_token": "1f0af717251950dbd4d73154fdf0a474a5c5119adad999683f5b450c460726aa",
"token_type": "bearer",
"expires_in": 7200
}
现在您有了一种识别用户的方法。您只需将此令牌附加到每个请求到受 doorkeeper_for
.
保护的端点
RestClient.get 'http://localhost/api/v1/users', { 'Authorization' => 'Bearer 1f0af717251950dbd4d73154fdf0a474a5c5119adad999683f5b450c460726aa', :accept => 'application/json'}
我有一个带有设计的后端应用程序和一个离子应用程序,我从中向后端发出请求。
每当我发送请求时,都会显示 401 状态未授权。
在这个项目中,我已经有门卫来管理授权,所以我不需要设计授权。
我能以某种方式让这些请求(添加一些东西到 headers )总是授权而不发送 post 请求凭据?
您需要以某种方式识别用户。如果您不使用会话,则需要生成某种访问令牌,Doorkeeper 可以为您做这件事。我不确定这是否有帮助,但我最近设置了以下流程。
通过受信任的客户端使用 OAuth2 时的一个选项,例如您 build/distribute 自己的前端应用程序是 资源所有者密码凭证授予 。 Doorkeeper 对此有一个 guide in the docs,并提供了处理 Devise 的建议。
我在我的 Doorkeeper 初始化程序中得到了类似的东西。您不需要授权客户端,因为您信任它:
resource_owner_from_credentials do |routes|
request.params[:user] = {:email => request.params[:email], :password => request.params[:password]}
request.env['devise.allow_params_authentication'] = true
request.env['warden'].authenticate!(:scope => :user)
end
skip_authorization do |resource_owner|
true
end
然后您应该能够使用密码授予类型发送请求,如下所示(也在文档中显示)。
RestClient.post 'http://localhost:3000/oauth/token', {grant_type: 'password', email: 'email@gmail.com', password: 'password'}, {:accept => 'application/json'}
您应该会收到与文档中所示相同的 JSON 回复。
{
"access_token": "1f0af717251950dbd4d73154fdf0a474a5c5119adad999683f5b450c460726aa",
"token_type": "bearer",
"expires_in": 7200
}
现在您有了一种识别用户的方法。您只需将此令牌附加到每个请求到受 doorkeeper_for
.
RestClient.get 'http://localhost/api/v1/users', { 'Authorization' => 'Bearer 1f0af717251950dbd4d73154fdf0a474a5c5119adad999683f5b450c460726aa', :accept => 'application/json'}