gpt4 book ai didi

ruby-on-rails - Devise_token_auth - 无法运行 Controller 操作

转载 作者:行者123 更新时间:2023-11-28 06:47:55 29 4
gpt4 key购买 nike

我目前正在构建一个与 ruby​​-on-rails api 通信的 iOS 应用程序。 API 的用户管理(登录、登录、...)部分由 devise_token_auth gem 处理。

我也在使用 Alamofire 来运行 HTTP 请求。

我目前正在测试两个 api:

  1. POST/api/auth/sign_in(.:format) devise_token_auth/sessions#create
  2. POST/api/posts(.:format) api/posts#create

第一个 api 用于登录,第二个用于创建帖子。仅供引用,在我的 posts_controller 中,我使用 before_action :authenticate_user! 来防止未经身份验证的用户创建帖子。

这是我想做的:

  1. 从客户端(iOS 应用程序)登录 --> sign_in api 返回访问 token
  2. 使用访问 token 从客户端创建帖子。

我设法使用此代码获取了访问 token :

let parameters = [
"email":"omar@omar.com",
"password":"password"]

Alamofire.request(.POST, "http://localhost:3000/api/auth/sign_in", parameters: parameters)
.responseJSON { response in
// get my access token and store it.
}

当我尝试创建帖子(第 2 部分)时,这是我所做的:

let headers = ["access-token":"<my-token-value>",
"token-type": "Bearer",
"uid":"omar@omar.com"]

let parameters = [
"title":"this is a title",
"body":"this is a body"]

Alamofire.request(.POST, "http://localhost:3000/api/posts", parameters: parameters, headers: headers)
.responseJSON { response in
print(response.response) // URL response
}

打印响应时,这是我得到的:

Optional(<NSHTTPURLResponse: 0x7fe422f2b670> { URL: http://localhost:3000/api/posts } { status code: 401, headers {
"Cache-Control" = "no-cache";
Connection = "Keep-Alive";
"Content-Length" = 37;
"Content-Type" = "application/json; charset=utf-8";
Date = "Thu, 03 Mar 2016 15:03:27 GMT";
Server = "WEBrick/1.3.1 (Ruby/2.2.1/2015-02-26)";
"Set-Cookie" = "request_method=POST; path=/";
Vary = Origin;
"X-Content-Type-Options" = nosniff;
"X-Frame-Options" = SAMEORIGIN;
"X-Request-Id" = "82a88799-3fac-42e0-bd01-db5b7e24fcda";
"X-Runtime" = "0.045969";
"X-Xss-Protection" = "1; mode=block";
} })

此外,在 Rails 服务器日志中:

Filter chain halted as :authenticate_user! rendered or redirected

在 15 毫秒内完成 401 Unauthorized( View :0.8 毫秒 | ActiveRecord:4.4 毫秒)

有谁知道错误是从哪里来的?

最佳答案

我终于找到了解决方案。除了需要 access-tokentoken-typeuid 之外,我的 API 还需要 client header 中的id。此 client id 在 sign_in 请求响应时发送。

关于ruby-on-rails - Devise_token_auth - 无法运行 Controller 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35776678/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com