Один из подходов, который я использовал для решения проблемы с проверкой того, вошел ли пользователь в систему, заключается в том, чтобы прикрепить его к вашему основному блейд-файлу как «глобальные данные». Сначала настройте контроллер.
public function index()
{
return view('welcome')->with(["globalData" => collect([
'user' => Auth::user()
]);
}
Затем в вашем корневом файле блейда
<script>
let globalData = "{!! $globalData->toJson() !!}";
</script>
Затем вы можете получить доступ к пользовательскому свойству в любом месте ваших компонентов, обратившись к globalData.user
и, таким образом, проверить, является ли user
объектом или нулевым/пустым.
class GuiController extends Controller
{
public function __construct() {
$this->data = [
'projects' => $this->projects(),
'packs' => Pack::all(),
'stimpack_io_token' => env('STIMPACK_IO_TOKEN'),
'stimpack_data_url' => env('STIMPACK_DATA_URL'),
'manipulatorData' => ManipulatorController::attachStartupData()
];
}
public function index()
{
return view('welcome')->with(["data" => collect($this->data)]);
}
<body>
<div id = "main"></div>
<script>
let data = {!! $data->toJson() !!};
</script>
<script src = "{{asset('js/app.js')}}" ></script>
</body>
upload() {
var compiler = new Compiler(this.props.engine);
var compiled = compiler.compile();
$.ajax({
type: "POST",
beforeSend: function(request) {
request.setRequestHeader("stimpack-io-token", data.stimpack_io_token);
},
Я отформатировал код следующим образом: <script> let globalData = "{!! $globalData->toJson() !!}"; </script> и public function index() { return view('welcome')->with([$globalData => collect([ 'user' => Auth::user() ]) ]); } Если я закомментирую тег скрипта в корневом файле блейда, ошибки не будет.
Хорошее форматирование, плохое редактирование. И вам должно быть хорошо, просто замените $globalData на «globalData» в вашем контроллере. Видите разницу с моим приведенным примером, где это строка, а не переменная?
Потрясающий! Я предпочитаю фронтальный независимый код реакции, используя LocalStorage для хранения кода авторизации, но я не знал блейд-решения. Спасибо
@Андерс Спасибо. Это сработало, как только я разобрался со своими маршрутами. Я могу получить globalData на странице просмотра, напечатав {{ $globalData }}, но когда я набираю globalData в любом из своих компонентов, он говорит, что не определено. Мне нужно передать его в конструктор и загрузить данные из этой переменной?
Нет, вы не должны этого делать. Можете ли вы опубликовать код? Я добавил пример из реальной жизни в ответ, возможно, это может вам помочь
@ Андерс Не знаю, что с ним не так, но теперь оно работает отлично. Я получаю все данные пользователя. Найти материал для реакции laravel немного сложно, поэтому мне пришлось прибегнуть к stackoverflow для ответов. Спасибо за помощь.
Несмотря на то, что кажется, что это информация только для чтения, существуют ли какие-либо риски безопасности, связанные с передачей этой информации на сторону клиента?
Эй, я попробовал этот метод, но он говорит о неопределенной переменной globalData.