我正在开发一个正在使用devise
和设置devise-token_authenticatable
的小项目Rails/GraphQL/Apollo/React
。项目是使用 设置webpacker
的,因此前端和后端都来自同一个域。登录、注册、注销都由前端(React)处理。我还需要指出这不是一个仅 API 的应用程序。
看来,服务器没有设置current_user
正确的 cookie,我收到了网络错误。
Heroku 日志显示以下错误:
NoMethodError (undefined method `authentication_token' for #<User:0x000055ca6c0e4c50>)
这是否意味着它在 nil 类上尝试“authentication_token”方法?
同时它在控制台中显示此错误:
Network error: Unexpected token < in JSON at position 0 (I have no idea what this is)
在我的登录组件的登录突变中,我在成功登录后将用户的 authentication_token 存储在本地存储中,在我的 Apollo 设置中,我从存储中检索它并将其附加到每个请求。但是 Chrome 开发工具的网络选项卡显示在响应标头中登录后我没有得到设计设置的 cookie。我对这一切都很陌生,所以不确定这是问题所在还是其他原因。PS:我没有使用设计会话,因为登录是在从端处理的。我有devise_for: users, skip: :sessions
我的路线。
代码片段:
非常感谢任何帮助。预先感谢您的帮助。
更新:问题已解决:(有关其他信息,另请参阅下面的答案)
通过current_user
在application_controller.rb
.
这是代码...
def current_user
token = request.headers["Authorization"].to_s
User.find_for_database_authentication(authentication_token: token)
end