Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用designe-token_authenticable 访问当前_用户;宝石_Ruby On Rails_Devise_Graphql_React Apollo_Devise Token Auth - Fatal编程技术网

Ruby on rails 如何使用designe-token_authenticable 访问当前_用户;宝石

Ruby on rails 如何使用designe-token_authenticable 访问当前_用户;宝石,ruby-on-rails,devise,graphql,react-apollo,devise-token-auth,Ruby On Rails,Devise,Graphql,React Apollo,Devise Token Auth,我正在做一个小项目,在Rails/GraphQL/Apollo/React设置中使用designe和designe-token\u authenticable。项目是使用webpacker设置的,因此前端和后端都来自同一个域。登录、注册、注销均由前端处理(React)。我还需要指出,这不是一个API唯一的应用程序 看来,服务器没有设置当前用户或正确的cookie,我收到了一个网络错误 Heroku日志显示以下错误: NoMethodError (undefined method `authent

我正在做一个小项目,在
Rails/GraphQL/Apollo/React
设置中使用
designe
designe-token\u authenticable
。项目是使用
webpacker
设置的,因此前端和后端都来自同一个域。登录、注册、注销均由前端处理(React)。我还需要指出,这不是一个API唯一的应用程序

看来,服务器没有设置当前用户或正确的cookie,我收到了一个网络错误

Heroku日志显示以下错误:

NoMethodError (undefined method `authentication_token' for #<User:0x000055ca6c0e4c50>)

修正了这个问题。它与GraphQl/Apollo代码无关。谢谢

马尔科·卡坎斯基是对的,我应该详细说明我的发现以及我是如何解决的:-(

我错误地认为当gem在头中检测到
身份验证令牌时,
当前\u用户
由gem自动发送
身份验证令牌
。至少按照我设置项目的方式,我没有得到预期的
当前\u用户
,而是得到了一个nil对象

所以…我在
application\u controller.rb
中创建了一个
current\u user
私有方法,解决了这个问题

这是密码

def current_user
 token = request.headers["Authorization"].to_s
 User.find_for_database_authentication(authentication_token: token)
end
def current_user
 token = request.headers["Authorization"].to_s
 User.find_for_database_authentication(authentication_token: token)
end

也许你可以与社区的其他人分享这个解决方案?谢谢,我正在处理一个类似的问题,你的解决方案真的很有帮助!:)如果你编辑你的原始问题,我将能够对它进行投票,因为它现在有一个非常有用的答案。
def current_user
 token = request.headers["Authorization"].to_s
 User.find_for_database_authentication(authentication_token: token)
end