2015-11-09 1 views
2

Я использую этот код для проверки учетных данных пользователей, но я не могу понять, как изменить код, чтобы получить сообщение об ошибке при сбое учетных данных. Используется редирект и так далее, но ничего не показывают ....Как получить пользовательское сообщение об ошибках входа в систему Laravel?

public function loginWithCredentials(Request $request) { 

    $signinEmail = $request->input('email'); 
    $signinPassword = $request->input('password'); 

    $user = new Users(); 
    $errors = new MessageBag; 
    $user = $user 
       ->where('email', '=', $signinEmail) 
       ->get()->first(); 

    if(empty($user)) { 
     $errors->add('error', 'Invalid credentials!'); 
     return json_encode([ 
       'error'=>true, 
       'messages'=>$errors 
     ]); 
    } 
    $userdata = $user->toArray(); 


    if(md5($signinPassword) != $userdata['password']) { 
     $errors->add('error', 'Invalid credentials!'); 

     return redirect()->guest('auth/login'); 
    } 

    Session::put('user',$userdata); 
    $errors->add('message0', 'Welcome ' . strtoupper($userdata['username']) . '!'); 


} 

Теперь это просто просто перенаправляет меня на белую страницу с сообщением «недействительные мандатной». Я хочу, чтобы сообщение было на странице входа.

ответ

0

Ваш код у вас есть некоторые недостатки, подумайте об их исправлении.

  • Почему вы смешиваете json-ответ с html-ответом?
  • Рассмотрите возможность использования bcrypt() для hashing вместо ваших пользователей вместо md5().
  • Добавить какую-то проверку, Laravel имеет встроенную проверку.
  • Laravel суда с легкостью использовать login auth, взгляните на.

Так что в вашем коде нужны какие-то изменения здесь:

public function loginWithCredentials(Request $request) { 

    $signinEmail = $request->input('email'); 
    $signinPassword = $request->input('password'); 

    $user = new Users(); 
    $user = $user 
     ->where('email', '=', $signinEmail) 
     ->get()->first(); 


    if(empty($user) || md5($signinPassword) != $user->password) { 
     return redirect()->back()->with('message', 'Invalid credentials!'); 
    } 

    $userdata = $user->toArray(); 

    Session::put('user', $userdata); 
    return view('view.name')->with('message', 'Welcome ' . strtoupper($userdata['username']) . '!'); 
} 

Затем на ваш взгляд, вы пишете сообщение успех так:

@if (session('message')) 
<div class="alert alert-success"> 
    {{ session('message') }} 
</div> 
@endif 

этот пример использует лезвие, но должен быть похож на другие виды.

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