我有一个使用laravel 5.2开发的多身份认证应用,在config/auth.php
中定义了以下守卫:
...
'admin' => [
'driver' => 'session',
'provider' => 'admin',
],
'user' => [
'driver' => 'session',
'provider' => 'user',
],
...
所以,admin
和user
。
问题出现在视图层,因为这两个已登录的保卫共享一些视图,例如:
Hello {{Auth::guard('admin')->user()->name}}
在这种情况下,守卫被硬编码到视图中,始终为admin
(当登录守卫为user
时会出错)。为了避免必须再为这个小改变做一个相同的视图,我希望它是动态的,类似于:在这种情况下,守卫被硬编码到视图中,始终为
admin
(当登录守卫为user
时会出错)。为了避免必须再为这个小改变做一个相同的视图,我希望它能够动态设置,类似于:Hello {{Auth::guard(<LOGGEDIN GUARD>)->user()->name}}
PS:我知道可以通过获取相应的URL段来实现,例如:www.site.com/pt/user/dasboard
,在这种情况下它将是第二个片段,但这样做程序将失去可扩展性,因为将来相应的片段可能不同(如上例中的2)。
getGuard()
在Laravel的auth
区域中是如何实现的。相信这会让你朝着正确的方向前进。 - camelCaseAuth::guard($this->getGuard())
触发了Method [getGuard] does not exist.
的错误。我猜这是一个5.1版本的特性,我也查看了https://dev59.com/tpTfa4cB1Zd3GeqPQ3Ta ,结果相同。 - Miguel$this
来访问它。但是您可以尝试使用类似Auth::guard(Auth::getGuard())
的方式来访问它,但我不能确定。 - camelCase...class 'Illuminate\Auth\SessionGuard' 没有 'getGuard' 方法
。 - Miguel