2013-03-12 7 views
0

Вот мой вопрос:Auth :: попытка не работает [Laravel]

У меня есть пользователи таблицу, которая:

имя пользователя электронный идентификатор пароль

Кроме того, модель пользователя и когда дело доходит до регистрации, все в порядке.

Теперь, когда я хочу, чтобы войти в систему, вот мой вид:

@layout('main') 

@section('content') 


@if(Session::has('login_errors')) 

<div class='alert alert-error'>Wrong ID</div> 

@endif 

{{Form::open('user/login', 'POST', array('class' => 'well inline-form'))}} 

{{Form::token()}} 


{{Form::text('username', Input::old('username'), array('class' => 'input-large', 'placeholder' => 'email'))}} 
{{Form::password('password', array('class' => 'input-large', 'placeholder' => 'Mot de passe'))}} 

{{Form::submit('Login', array('class'=>'btn btn-primary'))}} 

{{Form::close()}} 

@endsection 

А вот то, что я делаю в моем контроллер

public function action_login() 
{ 
    if(Auth::check()){return Redirect::to('user');} 

    if(Request::method() == 'POST') 
    { 

     $credentials = array('username' => Input::get('username'), 'password' => Input::get('password')); 

     if(Auth::attempt($credentials)) 
     { 
      return Redirect::to('user'); 
     } 

     else 
     { 

      return Redirect::to('user/login')->with_input()->with('login_errors', true); 

     } 
    } 


    Section::inject('title', 'Login'); 

    return View::make('user.login'); 

} 

Он должен работать, но это не делает ,

Ошибка заключается в следующем: когда я нажимаю кнопку входа в систему, моя форма переходит к моему контроллеру и читается. Я знаю, что мой Input :: get ('username'), Input :: get ('password') верен и зарегистрирован в db.

Проблема в том, что даже мой адрес электронной почты или пароль верны, я не могу получить Auth, и я получаю сообщение Неверный идентификатор. Я надеюсь, что было ясно ...

Вещи вы должны знать:

Я не изменил auth.php в конфигурации, поэтому имя пользователя является адрес электронной почты

Я хэш пароля, когда я подписаться с: ' пароль»=> Hash :: сделать (Input :: получить ('пароль'))

EDIT и решение

Ok, я понял это!

Прежде всего:

  • Я использовал Php 5.3.6 и Hash потребность 5.3.7, по крайней мере
  • После этого я понял, что в моей БД, пароль был 40 символов макс. Я чувствую себя глупо

Надеется, что это поможет кому-нити/

+0

Вы не выбраны какие-либо маршруты? – bretterer

+0

Мой маршрут очень прост: Route :: controller (Controller :: detect()); –

ответ

0

Для одного контроллера :: обнаружения() является некорректным подходом - и выступают во многих местах не принимать ярлык и использовать этот метод. Укажите каждый необходимый маршрут - это не только более читаемо, но и легче понять, что происходит с запросами.

Если вы не изменили конфигурацию auth, это должно означать, что имя пользователя, предоставленное из формы, должно быть чей-то EMAIL, так как это будет проверено Auth. Поэтому убедитесь, что это так. Если вы хотите совпадение с именем пользователя, обязательно установите это.

Кроме того, требуется дополнительная информация - вы действительно не начали то, что не работает, просто это не сработает. Что именно, не работает? Убедитесь, что вы следуете моим пунктам выше, и он все еще не работает, нам нужна дополнительная информация/код. Атм, ваш отчет об ошибках довольно испорчен.

+0

Хорошо, я знаю, для маршрутов, но это явно не проблема (я все еще изучаю Laravel) У меня четко указано: «Я не изменил Auth.php в config, поэтому имя пользователя - это электронная почта», поэтому Я знаю, что я должен использовать электронное письмо как имя пользователя, и это то, что я делаю. Теперь моя ошибка следующая: Когда я нажимаю на логин, моя форма переходит к моему контроллеру. Даже если имя пользователя (адрес электронной почты) и пароль верны, я все равно получаю ошибку, которую я написал, если пользователь написал неправильное имя пользователя/пароль. Итак, я попытался передать имя пользователя и пароль непосредственно в Auth :: try. Не работает ни то, ни другое. Надеюсь, что я понятен :) –

+0

К сожалению, ваш отчет был не таким ясным, как вы думали, поэтому ему нужна дополнительная информация. Рад, что вы поняли это, хотя :) – Oddman

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