我想建立一個基於軌道上的紅寶石的Web應用程序。對於身份驗證,我使用設計寶石。一切都很好:我可以創建帳戶,登錄,註銷等。紅寶石軌道 - 設計註冊空白密碼
但是在這裏我有一個問題。我希望能夠在不提供密碼的情況下進行註冊,但仍可以使用其他帳戶的密碼進行註冊。
我設置爲0的密碼lenght 128上配置/初始化/ devise.rb
config.password_length = 0..128
但什麼是下一步做我想要什麼?
謝謝
我想建立一個基於軌道上的紅寶石的Web應用程序。對於身份驗證,我使用設計寶石。一切都很好:我可以創建帳戶,登錄,註銷等。紅寶石軌道 - 設計註冊空白密碼
但是在這裏我有一個問題。我希望能夠在不提供密碼的情況下進行註冊,但仍可以使用其他帳戶的密碼進行註冊。
我設置爲0的密碼lenght 128上配置/初始化/ devise.rb
config.password_length = 0..128
但什麼是下一步做我想要什麼?
謝謝
好吧,我在這裏回覆作爲答覆。
感謝Ammar Shah,我想出瞭如何讓用戶輸入密碼和沒有密碼的用戶。
首先創建LIB文件/設計/戰略與下面的代碼(創建文件夾)命名database_authenticatable.rb:
require 'devise/strategies/authenticatable'
module Devise
module Strategies
# Default strategy for signing in a user, based on their email and password in the database.
class DatabaseAuthenticatable < Authenticatable
def authenticate!
if password.blank?
authentication_hash[:encrypted_password] = ''
end
resource = mapping.to.find_for_database_authentication(authentication_hash)
hashed = false
if validate(resource){ hashed = true; resource.valid_password?(password) }
remember_me(resource)
resource.after_database_authentication
success!(resource)
end
mapping.to.new.password = password if !hashed && Devise.paranoid
fail(:not_found_in_database) unless resource
end
end
end
end
Warden::Strategies.add(:database_authenticatable, Devise::Strategies::DatabaseAuthenticatable)
在
devise_create_user.rb遷移添加
然後:
t.string :remember_token
終於在user.rb型號:
before_create :remember_value
def valid_password?(password)
if password.blank?
true
else
super
end
end
def password_required?
new_record? ? false : super
end
def remember_value
self.remember_token ||= Devise.friendly_token
end
謝謝阿馬爾沙阿幫助我!
重置密碼長度在配置/初始化/ devise.rb爲默認值,並使用this answer,使密碼可選。
另外,下面是設計wiki中的gradual engagement feature的完整實現。這取決於你想要達到的目標。
試試這個:http://stackoverflow.com/questions/23857049/in-rails-when-using-the-devise-gem-how-to-create-a-user-without-email-and-passwo –