#jquery #ajax #laravel #authentication
#jquery #ajax #laravel #аутентификация
Вопрос:
Я ищу аутентификацию пользователя в приложении Laravel из модального окна.
Весь интерфейс выполняется с помощью jQuery, и я не могу это изменить (на Vue или React), поэтому мне нужно адаптироваться.
Пока что на стороне сервера мой метод входа в систему выглядит следующим образом:
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
$validator = Validator::make($credentials, [
'email' => 'required|string|email',
'password' => 'required|string',
]);
if ($validator->fails()) {
return response()->json([
'success' => false,
'errors' => $validator->errors()
]);
}
if (Auth::attempt($credentials)) {
return response()->json([
'success' => true
]);
}
return response()->json([
'success' => false,
'errors' => "Invalid credentials."
]);
}
На стороне интерфейса запрос выполняется следующим образом:
$("#submit").on("click", function(e) {
e.preventDefault();
const email = $("#email").val();
const password = $("#password").val();
if (email != '' amp;amp; password != '') {
axios.post($("#form").attr("action"), { email: email, password: password})
.then(response => {
if (response.data.success) {
window.location.href = "http://website.dev";
} else {
// check for errors and display them
}
});
}
});
В принципе это работает, но мне не очень нравится решение.
Есть ли у меня другой, более элегантный (и, может быть, даже более безопасный?) способ реализации этого?
Спасибо.
Комментарии:
1. основы на каждом языке такие же, как вы написали, я не могу добавить что-либо еще, просто вы также можете показывать сообщения eeror пользователю
2. использование токена jwt (passport) — более безопасный способ решения этой проблемы, если вы используете интерфейсные библиотеки или фреймворк, использование passport — единственный надежный способ аутентификации
3. @AmirJani, кроме jQuery, нельзя использовать никакие интерфейсные фреймворки или библиотеки. Так что я думаю, что JWT не вариант.