2013-11-20 132 views
0

目前我工作很好,帶有Ruby,並且出於安全目的使用Google應用程序Omniauth實現。我想有一點遺漏的功能,顯示當前登錄到該網站的用戶。我唯一不知道的是如何獲取當前登錄的用戶名返回並顯示。如何通過omniauth-google-apps獲取登錄的用戶名?

我不使用這種方法:http://matt.aimonetti.net/posts/2013/01/30/omniauth-and-google-apps/

我的登錄檢查技術是一個簡單的聲明:

Rails.env.development? ? 
    authorize({email: '[email protected]', name: 'dev'}) : 
    unless logged_in? 
     redirect_to '/auth/admin' 
    end 

附:使用「除非」聲明作爲修飾符會在運行時返回語法錯誤,所以這就是爲什麼我按照它的方式使用它。

任何幫助,非常感謝!

回答

1

當你定義你的路由你會指向一個特定的控制器動作的谷歌Apps的回調,例如:

post '/auth/google_apps/callback', to: 'sessions#create' 

在這個例子中,作爲基於OAuth的認證過程的最後一部分,SessionsController#create會調用。

在該操作中,您將能夠查詢OmniAuth在env[omniauth.auth]中填充的請求參數。這是在這個哈希在那裏你會找到用戶的姓氏和名字:

email  = env['omniauth.auth']['info']['email'] 
first_name = env['omniauth.auth']['info']['first_name'] 
last_name = env['omniauth.auth']['info']['last_name'] 

有關於這個話題,我推薦一個真正有用的Railscast。

http://railscasts.com/episodes/241-simple-omniauth

相關問題