我在從經過身份驗證的用戶檢索角色和權限資料以實作基于角色和權限的條件呈現時遇到問題。這是我第一次使用 react 和 laravel breeze,所以我很困惑在哪里或哪個控制器提供經過身份驗證的用戶資料,默認情況下這些資料只是 auth 變數的基本資料,所以我需要添加一些代碼來提供角色和權限資料. 請幫我解決這個問題。
讓我們看看下面的代碼
import React, { useState } from 'react';
import ApplicationLogo from '@/Components/ApplicationLogo';
import Dropdown from '@/Components/Dropdown';
import NavLink from '@/Components/NavLink';
import ResponsiveNavLink from '@/Components/ResponsiveNavLink';
import { Link } from '@inertiajs/inertia-react';
import Navbar from '@/Components/Navbar';
export default function Authenticated({ auth <--- //this auth variable, header, children }) {
const [showingNavigationDropdown, setShowingNavigationDropdown] = useState(false);
return (
<div className="min-h-screen bg-gray-100">
<nav className="bg-white border-b border-gray-100">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="flex justify-between h-16">
<Navbar userData = {auth.user.name} method="post"/>
</div>
</div>
</nav>
{header && (
<header className="bg-white shadow">
<div className="max-w-7xl mx-auto py-6 px-4 sm:px-6 lg:px-8">{header}</div>
</header>
)}
<main>{children}</main>
</div>
);
}
laravel breeze 已經為我們提供了一個名為 auth 的變數,默認包含經過身份驗證的用戶資料,因此我需要向該變數添加角色和權限資料。
先感謝您
uj5u.com熱心網友回復:
Inertia 提供了一個中間件來定義默認共享的道具(檔案)。在這里,您可以指定您正在談論的角色。
在這里,我得到了我的一個專案的簡化示例。我只檢索我需要的用戶欄位和他們要共享的角色:
/**
* Define the props that are shared by default.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function share(Request $request)
{
$user = Auth::user();
if ($user) {
$user->load('roles');
$user = [
'id' => $user->id,
'name' => $user->name,
'email' => $user->email,
'roles' => $user->roles,
];
}
return array_merge(parent::share($request), [
'auth' => [
'user' => $user ?? [],
],
'flash' => [
'success' => fn () => $request->session()->get('success'),
'error' => fn () => $request->session()->get('error'),
],
]);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/534239.html
標籤:PHP反应拉维惯性
上一篇:NavigationReactNativewithFormik-錯誤:Undefinedisnotanobject(evaluating'navigation.navigate')
