【问题标题】:Devise: authentication_token column in user model is null设计:用户模型中的身份验证令牌列为空
【发布时间】:2011-07-20 23:25:01
【问题描述】:

我刚刚创建了一个安装了设计插件的示例应用程序。我的用户模型中有:token_authenticatable,但由于某种原因,当我创建用户时,它使用authentication_token 列作为NULL 创建它。

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

我是否遗漏了什么或者我需要覆盖设计的代码?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 authentication devise


    【解决方案1】:

    在您的用户类中,只需添加

    class User < ActiveRecord::Base
      devise :database_authenticatable, :registerable #...etc
      before_save :ensure_authentication_token
    end
    

    这是一种设置您的 authentication_token 的设计方法。

    【讨论】:

    • 我在 HomeController 中添加了它,但我收到以下错误 undefined method `before_save' for HomeController:Class
    • @ed1t 不是控制器,是用户类。我将答案编辑得更明确
    • 我正在使用 mongo_mapper 和 mm_devise 适配器。当我添加 before_save .. 我有错误“未定义的局部变量或方法 `to_adapter' for User:Class”。你有什么想法吗?
    • @mike:抱歉,没有使用 mongo-mapper 设计。我将首先比较 rails generate mongo_mapper:devise User 与您的代码有何不同,这可能是您缺少的简单包含语句
    • 谢谢!我的印象是 Devise 会为新用户自动生成一个令牌,但我想我错了(或者至少它不再自行生成)。
    猜你喜欢
    • 1970-01-01
    • 2011-11-06
    • 2019-11-24
    • 2015-02-11
    • 2021-05-18
    • 1970-01-01
    • 2019-12-03
    • 2017-01-01
    • 2016-05-08
    相关资源
    最近更新 更多