1

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

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

我已经尝试了几种方法,但似乎没有任何效果。

提前感谢您的任何意见!

4

2 回答 2

0

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

于 2009-06-28T04:51:25.223 回答
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
于 2009-07-17T22:27:15.467 回答