Laravel 错误:方法 Illuminate\Auth\SessionGuard::venue 不存在

ake*_*dis 0 php authentication laravel

我正在创建一个多身份验证系统,我试图显示一个名为“场地”的登录场地模型中包含的数据,但我似乎无法访问它,它一直在标题中抛出错误?网上没有多少有用的信息,我想知道是否有人可以伸出援手?

场地.blade.php:

@extends('layouts.auth')

    @section('content')
    <div class="container">
        <div class="row justify-content-center">
            <div class="col-md-8">
                <div class="card">
                    <div class="card-header">Dashboard</div>
                        {{ dd(Auth::venue()) }}
                    <div class="card-body">

                    </div>
                </div>
            </div>
        </div>
    </div>
    @endsection
Run Code Online (Sandbox Code Playgroud)

登录控制器:

public function venueLogin(Request $request)
    {
        $this->validate($request, [
            'email'   => 'required|email',
            'password' => 'required|min:6'
        ]);

        if (Auth::guard('venue')->attempt(['email' => $request->email, 'password' => $request->password], $request->get('remember'))) {

            return redirect()->intended('/venue');
        }
        return back()->withInput($request->only('email', 'remember'));
    }
Run Code Online (Sandbox Code Playgroud)

守卫:

'defaults' => [
    'guard' => 'web',
    'passwords' => 'users',
],




'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
            'hash' => false,
        ],
        'customer' => [
            'driver' => 'session',
            'provider' => 'customers',
        ],
        'customer-api' => [
            'driver' => 'token',
            'provider' => 'customers',
            'hash' => false,
        ],
        'venue' => [
            'driver' => 'session',
            'provider' => 'venues',
        ],
        'venue-api' => [
            'driver' => 'token',
            'provider' => 'venues',
            'hash' => false,
        ],
    ],
Run Code Online (Sandbox Code Playgroud)

如有任何帮助,我将不胜感激!Laravel 真的有问题:(

bjo*_*nov 7

你不能那样做。

要从您正在使用的守卫获取模型,您必须指定您想要工作的守卫,然后通过user()方法检索数据

Auth::guard('venue')->user()

您可能会感到失望,因为大多数情况下,当您想从只有一个守卫的系统中连接的用户那里获取信息时,您只使用 Auth::user().

事实上,这是因为 Laravel 使用的默认保护是web,这是大多数人用于简单登录系统的保护。因此,您不需要指定guard(),只是user()因此您在使用时所犯的错误venue()直接认为它是通过更改配置添加到 Auth 对象的方法。但是当你使用特定的守卫时,你需要通过 Auth 对象指定你想要处理的守卫(在这种情况下venue),然后才能调用user()它的方法来获取用户的信息。