2015-10-14 5 views
1

Я прочитал Laravel 5 Docs about Authentication, но не смог войти в систему, как описано.Laravel5: Auth :: попытка не работает как ожидалось

Мои пользователи таблица содержит оба поля, имя пользователя и пароль (который типа TEXT), я уже хранится хэш пароля, который, как $2y$10$XCyEOyvC6Yp/O6HaeemPheO4KV1I8aEMUytZZt77Yjw9hp/j6uivWnope

вот мой код:

public function validateLogin() 
{ 
    $email = Input::get('email'); 
    $pass = Input::get('password'); 
    $pass = Hash::make($pass); 

    $credentials = [ 
      'username' => $email, 
      'password' => $pass 
    ]; 
    if (Auth::attempt($credentials)) { 
     // Authentication passed... 
     return "passed"; 
    }else{ 
     return "nope"; 
    } 
} 

Я пытался что-нибудь, Auth::attempt всегда возвращает ложь :( Имо это именно так, как описано в Документах, кто знает, что это не так? Благодаря

+0

проверить вас пользователь таблицей и конфигурацию/auth.php аутентификации пользователей таблицы –

ответ

2

Вы, наверное, не нужно делать $pass = Hash::make($password) позвоните сами.

Попробуйте удалить эту линию, если она будет работать.

Из документов:

<?php 

namespace App\Http\Controllers; 

use Auth; 
use Illuminate\Routing\Controller; 

class AuthController extends Controller 
{ 
    /** 
    * Handle an authentication attempt. 
    * 
    * @return Response 
    */ 
    public function authenticate() 
    { 
     if (Auth::attempt(['email' => $email, 'password' => $password])) { 
      // Authentication passed... 
      return redirect()->intended('dashboard'); 
     } 
    } 
} 

Метод попытка принимает массив пар ключ/значение в качестве первого аргумента . Значения в массиве будут использоваться для поиска пользователя в таблице вашей базы данных. Таким образом, в приведенном выше примере пользователь будет иметь значение , полученное значением столбца электронной почты. Если пользователь обнаружен, хешированный пароль, хранящийся в базе данных, будет сравниваться с значением хэшированного пароля , переданным методу через массив.

Для получения дополнительной контрольной проверки:

http://laravel.com/docs/master/authentication#authenticating-users

0

сделал и написать функцию в AuthController? или в любом новом/другом контроллере?

если и написал функция в другом контроллере убедитесь, что вы добавили этот код в верхних

use App\User; 
use Validator; 
use App\Http\Controllers\Controller; 
use Illuminate\Foundation\Auth\ThrottlesLogins; 
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers; 




public function login() 
    { 
     $email = Input::get('email'); 
     $password = Input::get('password'); 
     if (Auth::attempt(['email' => $email, 'password' => $password])) { 
      // Authentication passed... 
      return redirect()->intended('dashboard'); 
     } 
     else{ 
      return redirect()->intended('admin/login'); 
     } 
    } 
Смежные вопросы