使用新的openid登录authlogic创建新用户

时间:2009-06-24 22:57:15

标签: ruby-on-rails openid authlogic ruby-openid

我已经在rails网站中实现了authlogic,我正试图让openid正常工作。到目前为止,只要您拥有现有帐户,就可以登录,但如果不是,则可以登录。如果identity_url不在数据库中,我希望能够自动创建一个新帐户。

问题是我还需要存储一些额外的信息。如果用户第一次使用openid登录,我想让他们在创建帐户之前填写基本信息(姓名,电子邮件)。

我玩了几种方法,但似乎没有任何工作。

提前感谢任何输入!

2 个答案:

答案 0 :(得分:0)

也许尝试将附加信息放入某种临时表中,并跟踪用户所在的会话。一旦经过身份验证,将先前输入的信息与OpenID信息相关联,以创建真实用户。

答案 1 :(得分:0)

acts_as_authentic do |c| 
  c.openid_required_fields = [:email,"http://axschema.org/contact/email"]
end

允许您要求发送电子邮件。我不确定如何要求其他字段,但也许可以查看axschema.org页面。除了OpenID提供程序URL之外,用户无需填写任何内容。

结合登录和注册可以使用类似的东西(来自UserSessions控制器的未经测试的创建方法,如来自authlogic教程的东西)

def create
  if User.find_by_openid_provider(params[:user_session]).nil? # or something like that
    @user = User.new(params[:user_session])
    if @user.save
      redirect_to whatever_path
    else
      # handle error
    end
  else
    @user_session = UserSession.new(params[:user_session])
    if @user_session.save
      add_message 'Login successful!'
      redirect_to whatever_path
    else
      render :action => :new
    end
  end
end
相关问题