2015-01-23 6 views
1

Я пытаюсь использовать функцию Laravel Auth::attempt(), но она всегда переписывает меня на страницу входа, даже когда я использую имя пользователя valide и password.
Это мой путь:Laravel Auth :: попытка() перенаправить меня всегда на страницу входа

Route::get('/login', '[email protected]'); 
    Route::post('/login', '[email protected]'); 

    Route::get('/users/members', array('before' => 'auth', function() 
    { 
     return View::make('users.members'); 
    })); 

И это моя loginAction функция:

public function loginAction() { 
     $rules = array('username' => 'required', 
         'password' => 'required' 
         ); 
     $validator = Validator::make(Input::all(), $rules); 

     if ($validator->fails()) { 
      $messages = $validator->messages(); 
      return Redirect::to('login') 
           ->withErrors($validator) 
           ->withInput(Input::except('password')); 
     } 
    else { 
     $user = array(
      'username' => Input::get('username'), 
      'password' => Input::get('password') 
     ); 
     $auth = Auth::attempt($user); 

     if ($auth) { 
      dd(Auth::check()); // this return always **True** 
      return Redirect::to('users/members'); 
     } else { 
      return Redirect::to('login') 
           ->withErrors(['Login Failed please try again']);} 
     } 

    } 

Когда я использую неправильно username и password это показать мне сообщение об ошибке Login Failed please try again, и когда я использую данные Валиде это rederict me to the Login page without showing any error

Обновление Путь Фильтр:

Route::filter('auth', function() 
{ 
    if (Auth::guest()) 
    { 
     if (Request::ajax()) 
     { 
      return Response::make('Unauthorized', 401); 
     } 
     else 
     { 
      return Redirect::guest('login'); 
     } 
    } 
}); 

Update 2: Это моя страница профиля (где я хочу быть перенаправлены после входа в систему):

Route::get('/users/members', function() 
{ 
    dd(Auth::check()); This always return **false** 
}); 

Так что проблема, так как я думаю, что аутентификация пользователей не сохраняются после того, как вошли в систему.

+0

, что URL вы неоспоримый перенаправлены с действительными данными? также, попробовали ли вы 'dd (Auth :: user())' в вашем маршруте '/ users/members'? – nozzleman

+0

Работа с url прекрасна, и я попробовал 'dd (Auth :: user())' непосредственно перед 'return Redirect :: to ('users/members');' line и он покажет мне информацию о пользователе. Также я провел несколько тестов, и я понял, что после успеха аутентификации сеанс не сохраняется автоматически. – Chlebta

ответ

0

После глубокого копания я понял, что проблема, которую я использовал другое имя для первичного ключа, user_id вместо идентификатора, в моей базе данных. Так просто я добавил эту строку моей USER модель

class User extends Eloquent { 
    protected $primaryKey = 'admin_id'; 
....} 

Примечания Если вы используете другое имя для первичного ключа, а ид, то не забудьте добавить эти уместности

protected $ primaryKey = 'PrimaryKeyName';

Это позволит решить тона вопросов

+0

Пробовал здесь на Laravel 5.2 и ничего не менял. Нужно копать глубже. – ojrask

0

не могли бы вы прислать нам соответствующую часть вашего filters.php

Route::filter('auth', function() 
{ 
    // Your filter here 
} 

Я считаю, что есть что-то там, что предотвращает правильное перенаправление.

Для тестирования вы можете удалить фильтр с вашего маршрута.

Route::get('/users/members', function() ... 
+0

Функция Работа Я удалил фильтр, и он работает. и для фильтра проверьте мои обновления. – Chlebta

+0

Не уверен, что вы пытаетесь выполнить с помощью этого фильтра. Поскольку я использую свою собственную проверку подлинности, я не знаком с используемыми там статическими функциями.Если удаление фильтра будет работать для вас, я был бы счастлив, если бы вы дали мне «зеленую проверку» для правильного ответа на мой ответ ... –

+0

Зеленый чек для чего? это не повлияло на мои проблемы, если я удалю фильтр, тогда вся страница будет доступна через url. – Chlebta

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