设备:用户模型中的authentication_token列为空

7

我刚刚创建了一个安装了 Devise 插件的示例应用程序。在我的用户模型中,我使用了 :token_authenticatable,但是无论什么原因,在我创建用户时,它都会将 authentication_token 列作为 NULL 创建。

看起来你需要在创建新用户时设置 u.ensure_authentication_token! 来生成令牌。

我有遗漏什么吗?还是需要重写 Devise 的代码?

1个回答

17
在您的用户类中,只需添加:
class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable #...etc
  before_save :ensure_authentication_token
end

这是一个设备方法,它将设置你的authentication_token。


我在HomeController中添加了代码,但是遇到以下错误:HomeController类未定义`before_save'方法。 - ed1t
我正在使用mongo_mapper和mm_devise适配器。当我添加before_save时,出现错误“undefined local variable or method `to_adapter' for User:Class”。你有什么想法吗? - Mike Bevz
@mike:抱歉,我没有使用过mongo-mapper devise。我建议你先比较一下rails generate mongo_mapper:devise User和你的代码有什么不同,可能只是缺少了一个简单的包含语句。 - Jesse Wolgamott
认证令牌可以是任意随机字符串吗?还是必须特别计算?我问这个问题的原因是因为我想直接将用户注入到我的数据库中,但我不确定应该为认证令牌放什么。 - trusktr
它可以是任何字符串。 - Jesse Wolgamott
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接