Я работаю над фреймворком laravel 5.2, поддерживаю и защищаю наш код. Теперь я столкнулся с одной проблемой. Предположим, есть одна форма входа, подобная этой: —
<form id="userLoginForm" method="post" action="{{ url('/login') }}">{{csrf_field()}}
<label>Email: </label>
<input type="text" name="email" autocomplete="off" placeholder="Email" class="input-style" />
<label>Password: </label>
<input type="password" name="password" autocomplete="off" placeholder="Password" class="input-style" />
<input type="submit" class="green-btn-style" value="LOGIN" />
Теперь моя форма будет выглядеть так:
Теперь предположим, что я нажимаю кнопку удаления с клавиатуры, теперь токен удален из нашей формы. Теперь, когда я отправляю форму. это покажет мне ожидание несоответствия токена. Но я не хочу показывать эту ошибку хакеру или пользователю ..
Я также реализовал isset, но не работает.
Мой логин: —
if(isset($data['email']) && isset($data['password']) && isset($data['_token']) && Auth::attempt(['email' => $data['email'],'password' => $data['password']])) {
//redirect to dashboard
}
Может кто-нибудь помочь мне, как решить эту проблему.
Исключения обрабатываются файлом
app/Exceptions/Handler.php
в Ларавеле. Вы можете ловить исключения Token Mismatch и выполнять нужные действия. Пример кода будет
use Illuminate\Session\TokenMismatchException;
Чтобы поймать только исключение Token Mismatch, вы можете добавить его в метод рендеринга
if ($exception instanceof TokenMismatchException) {
return response()->view('errors.400', [], 400); // load any view of your choice
}
Других решений пока нет …