在我的应用程序中,我正在尝试添加“admin”用户以及“普通”用户
为此,我创建了一个额外的admin Guard and UserProvider。这似乎将用户记录在“admin”后卫下,而不是默认的“web”后卫
现在,在我的基本模板中,我正在尝试确定用户是否已登录以决定是否应显示注销按钮。
为此,我正在检查@auth
。但是,如果“普通”用户登录,这似乎只能起作用
有没有办法检查用户是否在任何保护下登录?
答案 0 :(得分:0)
您可以查看此https://laravel.com/docs/5.5/blade:
这样的特定警卫@auth('admin')
// The user is authenticated...
@endauth
但我不确定是否有任何东西可以检查任何警卫。
我为最近参与的项目创建了以下内容,并帮助我检查了谁登录以及是否有人登录。
我使用本指南http://laravel-recipes.com/recipes/50/creating-a-helpers-file
将以下内容添加到helpers.php
if ( ! function_exists('logged_in')) {
function logged_in($guard = null)
{
$validGuards = ['superadmin', 'admin', 'user'];
// guard specified
if ($guard) {
// check if guard is valid
if ( ! in_array($guard, $validGuards)) {
return null;
}
return Auth::guard($guard)->check() ? $guard : null;
}
// no guard specified, check all guards
foreach ($validGuards as $guard) {
if (Auth::guard($guard)->check()) {
return $guard;
}
}
return null;
}
}
您可以在视图中使用此功能,也可以在代码中的任何位置使用此功能
@if(logged_in('superadmin')) <-- returns guard name/null
// logged in as super admin
@endif
@if(logged_in()) // <-- returns the guard name/null
// logged in as any user
@endif
可能有更好的方法来完成上述工作,但它对我有用,并且在视图中使用非常有用
-
我还创建了以下内容以帮助您登录的用户:
if ( ! function_exists('logged_in_user')) {
function logged_in_user($guard = null)
{
if($guard) {
return Auth::guard($guard)->check() ? Auth::guard($guard)->user() : null;
}
if(logged_in()) {
return Auth::guard(logged_in())->check() ? Auth::guard(logged_in())->user() : null
}
return null;
}
}
我在上面的函数
旁边使用了它@if(logged_in('superadmin'))
{{ logged_in_user()->name }}
@endif
@if(logged_in())
{{ logged_in_user()->email }}
@endif
同样,可能有更好的方法来做到这一点,但它对我有用