Аутентификация пользователя из модального окна в Laravel с использованием JavaScript

#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 не вариант.