我有设计后端应用程序和一个离子应用程序,我可以从中请求后端
每当我发送请求时,都会获得未经授权的401状态。
在这个项目中,我已经有了管理授权的门卫,所以我不需要设计授权。
我可以以某种方式将这些请求(添加到标题中的内容)总是授权而不发送带凭证的帖子请求吗?
答案 0 :(得分:1)
您需要以某种方式识别用户。如果您没有使用会话,则需要生成某种访问令牌,门卫可以为您执行此操作。我不确定这是否有用,但我最近设置了以下流程。
通过受信任的客户端使用OAuth2时的一个选项,例如您自己构建/分发的前端应用程序是资源所有者密码凭据授权。门卫有一个guide in the docs这个与处理Devise的建议。
我在门卫初始化器中得到了类似的东西。您不需要授权客户,因为您信任它:
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'}