首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Restful身份验证迁移到Devise

从Restful身份验证迁移到Devise
EN

Stack Overflow用户
提问于 2011-01-11 19:32:51
回答 5查看 5.8K关注 0票数 19

许多Rails 2.3应用程序都在使用Restful身份验证,但是这个插件似乎在Rails 3上有一些问题。有没有办法从Restful身份验证平滑过渡到Devise?有没有人做过迁移,展示了如何更新用户模型?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-01-13 00:44:38

我已经将我的应用程序从Restful身份验证更新为Devise。下面是我的迁移:

代码语言:javascript
复制
class AlterUsersForDevise < ActiveRecord::Migration
  def self.up
    remove_column :users, :name
    change_column :users, :email, :string, :default => "", :null => false, :limit => 128
    rename_column :users, :crypted_password, :encrypted_password
    change_column :users, :encrypted_password, :string, :limit => 128, :default => "", :null => false
    rename_column :users, :salt, :password_salt
    change_column :users, :password_salt, :string, :default => "", :null => false, :limit => 255
    add_column :users, :reset_password_token, :string
    change_column :users, :remember_token, :string, :limit => 255
    rename_column :users, :remember_token_expires_at, :remember_created_at

    add_column :users, :sign_in_count, :integer, :default => 0
    add_column :users, :current_sign_in_at, :datetime
    add_column :users, :last_sign_in_at, :datetime
    add_column :users, :current_sign_in_ip, :string
    add_column :users, :last_sign_in_ip, :string

    rename_column :users, :activation_code, :confirmation_token
    change_column :users, :confirmation_token, :string, :limit => 255
    rename_column :users, :activated_at, :confirmed_at

    add_column :users, :confirmation_sent_at, :datetime
  end

  def self.down
    add_column :users, :name, :string, :limit => 100, :default => ""
    rename_column :users, :encrypted_password, :crypted_password
    change_column :users, :crypted_password, :string, :limit => 40
    rename_column :users, :password_salt, :salt
    change_column :users, :salt, :string, :limit => 40
    remove_column :users, :reset_password_token
    change_column :users, :remember_token, :string, :limit => 40
    rename_column :users, :remember_created_at, :remember_token_expires_at

    remove_column :users, :sign_in_count
    remove_column :users, :current_sign_in_at
    remove_column :users, :last_sign_in_at
    remove_column :users, :current_sign_in_ip
    remove_column :users, :last_sign_in_ip

    rename_column :users, :confirmation_token, :activation_code
    change_column :users, :confirmation_token, :string, :limit => 40
    rename_column :users, :confirmed_at, :activated_at

    remove_column :users, :confirmation_sent_at
  end
end

到目前为止,我的应用程序还没有上线。所以我使用Devise的密码加密,而不是Restful Authorization的密码加密。如果您的应用程序已经处于活动状态,并且您有活动用户,那么您应该配置Devise以使用Restful身份验证中的SHA1来对密码进行加密和解密。否则,您的所有用户都必须请求新密码。

您可以在devise初始化器中对其进行配置。

希望这能帮上忙。

票数 14
EN

Stack Overflow用户

发布于 2011-03-16 14:31:18

下面是从restful_authentication迁移到devise的一个很好的指南

https://github.com/plataformatec/devise/wiki/How-To:-Migrate-from-restful_authentication-to-Devise

编辑理由:之前的链接将人们带到一个空白页面。

票数 15
EN

Stack Overflow用户

发布于 2011-01-13 22:11:04

下面是如何克服密码问题的方法:

您需要制作一个自定义加密器,如下所示:

代码语言:javascript
复制
# /config/initializers/devise_encryptor.rb
require "digest/sha1"  

module Devise
  module Encryptors
    class OldRestfulAuthentication < Base
      def self.digest(password, stretches, salt, pepper)
        Digest::SHA1.hexdigest("--#{salt}--#{password}--")
      end
    end
  end
end

然后在devise.rb中选择它,如下所示:

代码语言:javascript
复制
config.encryptor = :old_restful_authentication

这应该就行了!

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4657145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档