2011-10-25 67 views
3

在我的应用程序中,我需要进行数据库身份验证,但没有密码。只需输入你的电话号码。当用户唱歌时,他输入电话号码,地址和姓名,并且没有密码。设计无密码的自定义身份验证

这是真的吗?只是无法弄清楚如何制作它。

感谢您的帮助!

+1

认证通常是可以达到他们知道或证明他们拥有对他们独特的东西。一个电话号码本身并不能满足这个要求 - 但如果它是一个手机号码,你可能会发送一条短信给他们必须使用的密码以确认他们有手机号码? –

+0

Windows验证或类似? – leppie

+0

解决了这个问题 – nxxn

回答

9

想通了是这样的:

在devise_no_pass.rb初始化加:

require 'devise/strategies/authenticatable' 

module Devise 
    module Strategies 
    class DeviseNoPass < Authenticatable 
     def authenticate! 
     return super unless params[:customer_sign_in] 
     customer = Customer.find_by_phone(params[:customer_sign_in] 
     customer ? success!(customer) : raise 
     end 
    end 
    end 
end 

Warden::Strategies.add(:devise_no_pass, Devise::Strategies::DeviseNoPass) 

在devise.rb:通过询问用户唯一的东西

config.warden do |manager| 
     manager.default_strategies(:scope => :customer).unshift :devise_no_pass 
    end 
+0

你可以分享你的客户模型代码相关的设计...和路线这个,以及你的登录表单?我正在尝试做类似的事情,这会有所帮助。我想看看你在模型中启用的模块具体是什么 –

+0

对不起,但我还没有得到这个项目代码。我不记得我脑子里究竟发生了什么。 – nxxn

+0

嘿,我也在研究同样的问题,但没有运气。我需要无需密码才能登录,即仅使用用户名登录。@ Joel是否找到了解决方案? –