0

作为我的应用程序的一部分,当我向其他用户发送邀请时,我需要在新创建的用户登录应用程序之前为他们设置一堆参数。因此,在切换到 DeviseTokenAuth(和 rails api)之前,我使用了 devise,它允许我从后端进行用户更改。例如,如果我转到控制台并执行 user.save,它会返回 true。

现在切换到 DeviseTokenAuth 后,我必须在 User 模型的关注文件中输入以下内容:

include DeviseTokenAuth::Concerns::User

包含此内容后,我无法从后端对用户进行更改(例如,rails 控制台> user.save 返回 false)。我认为每次更新用户时都需要一个令牌?对于特定的控制器操作,我如何跳过此操作,例如,我需要在用户/客户端实际调用操作的情况下更新用户。(发送令牌)

4

1 回答 1

0

万一其他人遇到这个问题:我花了几个小时在黑暗中拍摄,最终意识到用户对象的 uid 字段需要使用 DeviseTokenAuth 填充。否则,用户将无法更新。ieuser.save 将返回 false

就我而言,我正在使用 devise_invitable 发送邀请,该邀请目前超出了 DeviseTokenAuth 默认值的范围。因此,当您使用 Devise_invitable gem 的邀请方法创建新用户时,不会自动设置 UID、提供者字段。我只需要添加 2 行代码发布邀请:

u= User.invite!(params[:email])
u.uid=params[:email] #added
u.provider='email' #added
u.save #added

现在用户对象工作正常,它与令牌本身无关 - 所以我之前在问题中陈述的假设是骗人的。

于 2019-07-23T13:17:58.590 回答