2016-12-05 14 views
0

나는 래벨과 소셜 인증을 모두 가지고 있습니다. 사용자가 페이스 북을 사용하여 로그인하면, fb_id, username, email 등과 같은 사용자 세부 정보를 내장 로그인 시스템에서 인증 할 수있는 users 테이블에 저장한다고 가정합니다.이 방법으로 laravel Auth을 사용할 수 있습니다.로그인 정보 시스템에서 로그인하기 위해 소셜 인증 정보 사용하기

$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('/'); 

이제 users 테이블에는 사용자 이름과 암호가 NULL 인 사용자가 있습니다. 암호 검증이 필요하지 않으면 누구도 로그인에 내장 된 사용자 이름으로 로그인 할 수 없습니까? 또는 나의 개념에 무엇이 잘못 되었습니까?

+0

Laravel에 대해 잘 모릅니다. 그러나 이런 종류의 상황에서 응용 프로그램이 토큰을 가져올 것이라고 확신합니다. 사용자가 유효한지 여부를 말하는 페이스 북. Facebook 만 실제 자격 증명을 봅니다. 그것은 연합 된 신원이라고 불립니다. 그리고 그것은 좋은 일입니다. 페이스 북의 자격증 명을 저장하는 많은 무작위, 잠재적으로 안전하지 않은 사이트에 만족하십니까? 그리고 사용자의 자격 증명을 저장하면 무엇을 할 것이며, 암호를 변경했는지 또는 계정이 만료되었는지 어떻게 알 수 있습니까? 페이스 북이 당신을 위해 모든 것을 처리한다. 당신이 필요로하는 것은 그들로부터 "예/아니오"대답이다. – ADyson

+0

비밀번호를 해시하는 것이 좋습니다. 빈 패스워드가 허용된다면, 그들은 비어 있지 않은 것으로 해쉬 할 것이다 (예를 들어'password_hash (" ', PASSWORD_DEFAULT);'$ 2y $ 10 $ MD7HZwh9oki9U74Ta1/7OuDpYK8UXAFEufgMIeNazKSyv1xRabwqu'와 같은 것을 반환한다) 그러므로 실제 문제는 없어야한다. 너의 방법. –

+0

@ADyson 암호를 묻는 질문을하지 않았습니다. 만약 내가 아이디, 이메일, 비밀 번호를 내 애플 리케이션 데이터베이스의 인증 테이블에 빈 채로 저장합니다. 일반 로그인 양식에서 로그인 할 수 없습니까? 아니면 내가 인증 테이블에 어떤 fb 사용자 정보도 저장하지 않아야합니까? –

답변

0

비밀번호 유효성 확인이 필요하지 않은 경우 누구도 로그인으로 로그인 한 사용자 이름으로 로그인 할 수 없습니까?

예 아무도 로그인 할 수 없습니다. 코멘트에서

:

해결 방법 1 : 빈 암호를 hashed.Assuming해야

비밀번호가 허용 , 그들은 (예를 들어, $2y$10$MD7HZwh9oki9U74Ta1/7OuDpYK8UXAFEufgMIeNazKSyv1xRabwqu‌​ 같은 password_hash('',PASSWORD_DEFAULT); 반환 뭔가 비어 있지 않은 무언가에 해시됩니다

) 따라서이 방법에는 실제 문제가 없어야합니다.

해결 방법 2 : 우리는 플래그에 별도의 인증 소스 인 것으로 사용자가 필드를해야

. 그런 식으로 누군가가 직접 세부 정보를 사용하여 로그인하려고하면 자격 증명을 확인할 때 해당 플래그가있는 행을 무시할 수 있습니다.

-3

최근에 같은 문제가 발생했습니다. 추천 대상 :

사용자가 소셜 미디어를 선택하여 웹 사이트에 로그인 할 때 인증 후 소셜 미디어 사이트에서 가져온 정보를 사용하여 웹 사이트에 계정을 만들고 웹 사이트에 기록합니다. 이제 로그인하는 즉시의 비밀번호를 설정하기 위해 팝업을 표시하십시오.

이제 Laravel과 로그인 용 소셜 인증을 모두 사용할 수 있습니다.

+1

분명히 이것은 소셜 로그인을 사용하여 요점을 잃었습니다. 이제 웹 사이트에 다른 계정과 소셜 계정이 있습니다. – ADyson

+0

@ADyson 그래서 사용자가 자신의 소셜 계정을 사용하여 귀하의 사이트에 로그인 할 수 있지만 실제 계정을 만들지 못하게 하시겠습니까? 귀하의 웹 사이트에 자신의 계정을 만들지 않았다면 어떻게 로그인 할 것입니까? 이것은 미친 짓이다. 내 지식에 따라 소셜 미디어를 사용하여 웹 사이트에 로그인하면 사이트에 새 계정이 만들어집니다. –

+0

나는 그들에 대한 기록을 만들지 말고, 왜 그들에게 비밀 번호를 묻는가? 그들은 소셜을 통해 로그인하기를 선택 했으므로 사이트에 직접 계정을 만들지 않으려 고하며 별도의 로그인과 비밀번호를 관리하고 싶지 않습니다. 필요한 최소 세부 정보를 작성하고이를 소셜 계정 ID와 연결하십시오. 두 가지 다른 방법으로 로그인 할 수 있다면 어쨌든 혼란 스럽습니다. – ADyson