Я создаю приложение погоды с Laravel (почти закончено), и я решил реализовать интерфейс с React / Redux / React-маршрутизатором и использовать Laravel из API-вызовов. Единственное, что я решил оставить прежним, это моя пользовательская реализация laravel auth с маршрутами и представлениями. Тем не менее, я изо всех сил пытаюсь найти безопасный способ передать мой объект Auth :: user после входа в систему, чтобы сохранить на Redux. У меня есть 2 варианта:
1) После входа в систему и до рендеринга основного jsx, сделать запрос axios на конкретный маршрут, чтобы вернуть Auth :: user как:
в route.php
Route::post('/auth/user' ,function(){
return response()->json(['user'=>auth()->user()]);
})->middleware('auth');
в JS
axios.post('/auth/user').then((res)=>{console.log(res.data.user)}).catch((e)=>{console.log(e)})
2) передать Auth :: user с помощью blade-сервера, перехватить его с помощью getAttribute, сохранить его в Redx и мгновенно удалить из DOM:
<div id="app" data-usr="{{ auth()->user() }}"></div>
Однако ни один из них не кажется мне безопасным способом передачи такого рода данных. Кто-нибудь может сказать мне свое мнение об этом или придумать мне лучшее решение?
Большое спасибо.
Я хотел бы создать класс, который будет представлять пользователю только жизненно важную информацию, которую я должен показывать на внешнем интерфейсе.
Так что вместо прохождения auth->user()
вперед, вы можете ввести его в decorator
и генерировать simpler user class
только с методами, которые вы хотите отобразить.
К счастью, я нашел решение со встроенной в Laravel реализацией API TOKEN. Также я уничтожаю токен после выхода из системы и воссоздаю его при входе в систему, чтобы никто не мог использовать его с другими службами для сбора данных, если он не вошел в систему.