我正在创建一个多重身份验证系统,试图显示包含在登录场所的名为“ venue”的模型中的数据,但我似乎无法访问它,它会不断抛出标题错误?在线上没有太多有用的信息,我想知道是否有人可以伸出援手?
venue.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
登录控制器:
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'));
}
警卫:
'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,
],
],
我将非常感谢您的帮助! laravel真的很麻烦:(
答案 0 :(得分:4)
您不能那样做。
要从正在使用的防护装置中获取模型,必须指定要使用的防护装置,然后通过user()
方法检索数据
Auth::guard('venue')->user()
您可能会感到失望,因为在大多数情况下,当您想从只有一个保护装置的系统中连接的用户那里获取信息时,您只会使用Auth::user()
。
实际上,这是因为Laravel使用的默认防护是web
,这是大多数人用于简单登录系统的默认防护。因此,您无需指定guard()
,只需指定user()
,因此您在使用venue()
时所犯的错误直接认为这是通过更改配置将其添加到Auth对象中的方法。但是,当您使用特定的防护措施时,需要先通过Auth对象指定要使用的防护措施(在这种情况下为venue
),然后才能调用其上的user()
方法用户信息。