使用 Laravel 身份验证时,如何检查用户是否在反应组件中“登录”?

She*_*tel 5 laravel reactjs

我在我的网站上设置了 Laravel 身份验证。它工作得很好,但我想知道如何检查用户是否在 React 组件中登录并显示他/她的特定内容。

And*_*ers 4

我用来解决检查用户是否登录问题的一种方法是将其作为“全局数据”附加到主刀片文件中。首先设置您的控制器。

public function index()
{        
    return view('welcome')->with(["globalData" => collect([
        'user' => Auth::user()
    ]);
}
Run Code Online (Sandbox Code Playgroud)

然后在你的根刀片文件中

<script>
    let globalData = "{!! $globalData->toJson() !!}";
</script>
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过引用来访问组件中任何位置的用户属性globalData.user,从而测试它是否user是对象或 null/空。


来自版本 15.4.2 的 React 项目的示例

控制器

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)]);
    }
Run Code Online (Sandbox Code Playgroud)

看法

<body>            
    <div id="main"></div>
    <script>
        let data = {!! $data->toJson() !!};
    </script>
    <script src="{{asset('js/app.js')}}" ></script>                
</body>
Run Code Online (Sandbox Code Playgroud)

组件内部的使用

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);
        },
Run Code Online (Sandbox Code Playgroud)