2009-06-24 92 views
1

我已經在rails站點中實現了authlogic,並且我試圖讓openid正常工作。到目前爲止,只要你有一個現有的帳戶,你就可以很好地登錄,但如果你沒有帳戶,你可以登錄。如果identity_url尚未存在於數據庫中,我希望能夠自動創建一個新帳戶。使用新的openid登錄authlogic創建一個新用戶

問題是我還需要存儲一些額外的信息。如果用戶第一次使用他們的openid登錄,我想要求他們在創建帳戶之前填寫基本信息(姓名,電子郵件)。

我玩過幾種方法,但似乎沒有任何工作。

在此先感謝您的任何意見!

+0

多虧了你們兩個應允的。我最終做了什麼(以防其他人感興趣!)像正常處理openid登錄,但不是將新用戶保存到數據庫。相反,我將它們的信息存儲在會話變量var中,並在將它們添加到數據庫並將其登錄之前向他們詢問其餘信息。希望這有助於您! – Ryan 2009-08-16 03:57:33

回答

0

也許您嘗試將附加信息放入某種臨時表中,並跟蹤用戶所處的會話。一旦通過身份驗證,將以前輸入的信息與openid信息連接起來以創建真實用戶。

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 
相關問題