【问题标题】:Devise authentication token设计认证令牌
【发布时间】:2011-12-14 02:44:44
【问题描述】:

在设计中,我如何访问用户的身份验证令牌。当 ajax 调用启动用户会话时,我需要能够从用户那里获取身份验证令牌。我尝试做一些事情,比如在我的模型中添加 :token_authenticable

devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable

还将名称的属性(例如 :authentication_token 和 :authenticity_token)添加到 attr_accessible。但是每次我尝试使用 user.auth 从用户中调用 authentication_token 或这个authentity_token ......我都会遇到这样的错误

NoMethodError: undefined method `authentication_token' for #<User:0x000001016b1140>

抱歉,我需要让这个令牌与我的 ajax 调用一起发送,(我从事的最后一个项目有一个令人难以置信的 BOOTLEG 解决方案,其中设计几乎从应用程序中被撕掉,我只需要这个该死的令牌)

【问题讨论】:

  • 我遇到了类似的问题,如果你找到了解决方案,请告诉我,没有好的阅读材料可供选择
  • token_authenticable 已贬值,如下所示:stackoverflow.com/questions/18931952/…

标签: ruby-on-rails ruby devise gem


【解决方案1】:

通过将:token_authenticatable 模块包含到devise 用户模型中来解决此问题:

devise :token_authenticatable, ...

此外,方法是在类本身上定义的,而不是在实例上。称它为User.authentication_token。

请看这里:https://github.com/plataformatec/devise/blob/master/lib/devise/models/token_authenticatable.rb#L61-63。

【讨论】:

  • 很好,对不起,如果我听起来有点慢,但是要检查特定用户是谁,我应该创建一个名为 auth_token 的属性并说 user.auth_token = User.authentication_token。然后使用它来验证用户实际上是谁。因为似乎设计已经在我更改视图时发送该参数,但我无法通过 ajax 调用手动执行此操作
  • 方法 authentication_token 存在于实例和类上。使用实例方法 user.reset_authentication_token!要设置令牌(基本上是 user.authentication_token = User.authentication_token),设计应该处理实际的验证部分:“mysite.com/user/1/edit?auth_token=#{user.authentication_token}”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-15
  • 1970-01-01
  • 2014-08-16
  • 2013-05-29
  • 2021-10-25
  • 1970-01-01
相关资源
最近更新 更多