2016-08-23 2 views
2

Я использую Laravel 5.0. Я хочу сделать логин только с именем пользователя (без пароля), потому что я использую Single Sign On для доступа к моему проекту Laravel, поэтому, если пользователь успешно зарегистрировался в режиме единого входа, он будет проверять мою базу данных, если имя пользователя пользователя, зарегистрировался или нет.
Я ищу этот весь день, но я все еще нашел ключ.

я получил ошибку:Как войти без пароля, используя Auth :: попытка в Laravel 5.0?

Argument 1 passed to Illuminate\Auth\Guard::login() must implement interface Illuminate\Contracts\Auth\Authenticatable, null given

, если я использую этот код в моем LoginController:

$user = User::where('USER_NAME', '=', $_GET['UserName'])->first(); 
if(Auth::login($user)->USER_ID == $_GET['UserName']){ 
    return redirect('Home'); 
} 

И если я использую ниже код в моем LoginController:

if(Auth::attempt(['USER_ID' => $_GET['UserName']])){ 
    return redirect('Home'); 
} 

У меня есть ошибка:

Undefined index: password

ответ

0

Согласно документации:

the user will be retrieved by the value of the email column. If the user is found, the hashed password stored in the database will be compared with the hashed password value passed to the method via the array.

Таким образом, пароль будет необходимо проверить в этом методе и, следовательно, это обязательный параметр.

Вы можете войти как следующее:

$user = User::where('USER_NAME', '=', $_GET['UserName'])->first(); 

if (empty($user)) { 
    abort(404); 
} 

if(Auth::loginUsingId($user->id)){ 
    return redirect('Home'); 
} 
+0

Я попробовал это, и я получил сообщение об ошибке 'NotFoundHttpException в application.php строке 901:' – hendraspt

+0

Не уверен. Я пробовал в своем коде, он работает нормально. – Sovon

0

Вы можете вручную authencate пользователя только по электронной почте. как это:

public function authenticate(Request $request) 
    { 
       $email=$request->get('email'); 
       if (Auth::attempt(['email' => $email)) 
       {  
        return redirect()->intended('/'); 
       } 
       else 
       { 
        return redirect('/login'); 
       } 

    } 
+0

Мне нужно добавить этот код – vinox

Смежные вопросы