2016-12-05 81 views
0

我有兩個laravel內置和社會認證。假設如果在使用Facebook的用戶登錄後,我存儲用戶的細節,如fb_idusernameemail等方式向用戶表,該表是從真僞內置登錄system.This方式,我可以使用laravel Auth利用社會authenticaion細節登錄由內置的登錄系統

$fb_user = Socialite::driver('facebook')->user(); 
$user = User::firstOrCreate(['fb_id'=>$fb_user->id,'name' => $fb_user->name, 'email' => $fb_user->email]); 
Auth::login($user, true); 
return redirect('/'); 

現在,用戶表中有一個用戶名和密碼爲NULL的用戶。如果不需要密碼驗證,任何人都無法使用內置登錄用戶名登錄?或者我的概念在這裏有什麼問題?

+0

我不知道Laravel,但我非常確定在這種情況下,您的應用程序只是獲取令牌facebook說明用戶是否有效。只有Facebook會看到實際的憑據。它被稱爲聯合身份。這是一件好事。你會很高興與很多隨機的,可能不安全的網站存儲您的Facebook的憑據?如果您存儲用戶的憑證,您將如何處理它,以及如何知道他們是否更改了密碼,或該賬戶是否過期? Facebook爲你處理所有這些,你需要的只是他們的「是/否」答案。 – ADyson

+0

希望你哈希密碼。假設允許使用空密碼,它們將散列到非空的地方(例如,'password_hash('',PASSWORD_DEFAULT);'返回類似'$ 2y $ 10 $ MD7HZwh9oki9U74Ta1/7OuDpYK8UXAFEufgMIeNazKSyv1xRabwqu')因此,應該沒有真正的問題你的方法。 –

+0

@ADYSON我不是要求FB給我提供密碼。如果我將他們的ID,電子郵件,名稱留在我的應用程序數據庫的可驗證表中的空白密碼。難道它不能從普通的登錄表單登錄嗎?或者我應該只是不存儲任何fb用戶詳細信息在可驗證的表中? –

回答

0

如果沒有 需要密碼驗證,不能用任何用戶名從內置登錄名登錄嗎?

是任何人都可以登錄。

從評論:

解決方案1:

密碼應hashed.Assuming空密碼是允許的,他們會出現亂碼的東西,不爲空(例如,password_hash('',PASSWORD_DEFAULT);回報像$2y$10$MD7HZwh9oki9U74Ta1/7OuDpYK8UXAFEufgMIeNazKSyv1xRabwqu‌​ )因此,這種方法應該沒有真正的問題。

解決方案2:

我們應該有一個字段來標記用戶從一個單獨的認證源之中。這樣,如果有人試圖直接使用這些詳細信息登錄,則可以在檢查憑據時忽略具有該標誌的行

-3

最近我得到了同樣的問題。我推薦:

當用戶選擇社交媒體登錄到您的網站時,使用您從社交媒體網站獲得的信息在您的網站上創建他們的帳戶後,將其登錄到您的網站。現在,只要他們登錄,向他們展示一個彈出窗口,爲他們的帳戶設置密碼。

現在,那麼可以同時使用Laravel內置和登錄社交認證。

+1

這肯定會使用社交登錄來擊敗他們 - 現在他們在您的網站上還有另一個帳戶,以及他們的社交帳戶。 – ADyson

+0

@ADyson你是說,允許用戶使用他們的社交賬戶登錄到你的網站,但不要創建他們的實物賬戶?如果您沒有在您的網站上創建自己的帳戶,您將如何登錄?瘋了吧。據我所知,當您使用社交媒體登錄任何網站時,他們也會在其網站上創建一個新帳戶。 –

+0

我不是說不創建任何記錄,但爲什麼要求他們輸入密碼?他們選擇通過社交登錄,這意味着他們不想被困擾在您的網站上創建直接帳戶,並且他們不想管理單獨的登錄名和密碼。只需創建您需要的最低限度的詳細信息並將其與社交帳戶ID相關聯即可。如果他們能夠以兩種不同的方式登錄,無論如何這只是令人困惑。 – ADyson