显示 @guest 标签内的元素,即使用户已通过身份验证
Elements inside @guest tags shown, even though user is authenticated
如标题所述,即使用户已通过身份验证,也会显示来宾标签内的内容。
我想在标准用户登录时在导航栏中显示仪表板路线,在“门户”用户登录时显示特定的注销按钮。
我的 auth.php 文件中有两个守卫(一个是标准的,传送门是我的自定义):
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'portal' => [
'driver' => 'session',
'provider' => 'portals'
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
'portal' => [
'driver' => 'eloquent',
'model' => App\Models\Portal::class,
],
这是我的 app.blade.php 中带有 @auth 标签的代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Finanzraketen</title>
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
<style>
.hintergrund{
background-image: url('/background.jpeg');
background-size: cover;
}
</style>
</head>
<body class="hintergrund">
<!-- Navbar goes here -->
<nav class="bg-white shadow-lg bg-gradient-to-r from-green-400 to-blue-500 mb-10">
<div class="max-w-full mx-auto px-4">
<div class="flex justify-between">
<div class="flex space-x-7">
<div>
<!-- Website Logo -->
<a href="#" class="flex items-center py-4 px-2">
<img src="/rakete-2.png" alt="Logo" class="h-8 w-8 mr-2">
<span class="font-semibold text-black text-lg">Finanzraketen</span>
</a>
</div>
<!-- Primary Navbar items -->
<div class="hidden md:flex items-center space-x-3 ">
<ul class="flex items-center pl-10 grid grid-cols-6 gap-10">
<a class="py-2 px-2 font-medium text-black rounded shadow transition
duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-100" href="{{ route('home') }}" class="p-3">Home</a>
<a class="py-2 px-2 font-medium text-black rounded shadow transition
duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-100" href="{{ route('overview') }}" class="p-3">Stellenanzeigen</a>
@auth('web')
<a href="{{ route('dashboard') }}" class="col-start-3 py-2 px-2 font-medium text-black rounded shadow transition
duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-100">Dashboard</a>
<a href="" class="col-start-4 py-2 px-2 font-medium text-black rounded shadow transition border-gray-500
duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-100">{{ auth()->user()->email }}</a>
<form action="{{ route('logout') }}" method="post" >
@csrf
<button type="submit" class="col-start-5 py-2 px-2 font-medium text-black rounded shadow transition
duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-100">Logout</button>
</form>
@endauth
@auth('portal')
<form action="{{ route('portal_logout') }}" method="post">
@csrf
<button type="submit" class="col-start-5 py-2 px-2 font-medium text-black rounded shadow transition
duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-100">Portal Logout</button>
</form>
@endauth
@guest
<a class="py-2 px-2 font-medium text-black rounded shadow transition
duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-100" href="{{ route('login') }}" class="p-3">Mitarbeiter Login</a>
<a class="py-2 px-2 font-medium text-black rounded shadow transition
duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-100" href="{{ route('register') }}" class="p-3">Registrieren</a>
<a class="py-2 px-2 font-medium text-black rounded shadow transition
duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-100" href="{{ route('portal_login') }}" class="p-3">Portal Login</a>
<a class="py-2 px-2 font-medium text-black rounded shadow transition
duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-100" href="{{ route('portal_register') }}" class="p-3">Portal Registrieren</a>
@endguest
</ul>
</div>
</div>
<!-- Mobile menu button -->
<div class="md:hidden flex items-center">
<button class="outline-none mobile-menu-button">
<svg class=" w-6 h-6 text-black hover:text-green-400"
x-show="!showMenu"
fill="none"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
viewBox="0 0 24 24"
stroke="currentColor"
>
<path d="M4 6h16M4 12h16M4 18h16"></path>
</svg>
</button>
</div>
</div>
</div>
<!-- mobile menu -->
<div class="hidden mobile-menu">
<ul class="">
<li> <a class="block text-sm px-2 py-4 hover:bg-green-500 transition duration-300" href="{{ route('home') }}">Home</a></li>
<li> <a class="block text-sm px-2 py-4 hover:bg-green-500 transition duration-300" href="{{ route('overview') }}">Stellenanzeigen</a> </li>
@auth()
<li>
<a href="{{ route('dashboard') }}" class="block text-sm px-2 py-4 hover:bg-green-500 transition duration-300">Dashboard</a>
</li>
<li>
<a href="" class="block text-sm px-2 py-4 hover:bg-green-500 transition duration-300">{{ auth()->user()->email }}</a>
</li>
<li>
<form action="{{ route('logout') }}" method="post" class="block text-sm px-2 py-4 hover:bg-green-500 transition duration-300">
@csrf
<button type="submit">Logout</button>
</form>
</li>
@endauth
@guest
<li>
<a class="block text-sm px-2 py-4 hover:bg-green-500 transition duration-300" href="{{ route('login') }}" class="p-3">Mitarbeiter Login</a>
</li>
<li>
<a class="block text-sm px-2 py-4 hover:bg-green-500 transition duration-300" href="{{ route('register') }}" class="p-3">Registrieren</a>
</li>
<li>
<a class="block text-sm px-2 py-4 hover:bg-green-500 transition duration-300" href="{{ route('portal_register') }}" class="p-3">Bewerbungsportal Login</a>
</li>
@endguest
</ul>
</div>
<script>
const btn = document.querySelector("button.mobile-menu-button");
const menu = document.querySelector(".mobile-menu");
btn.addEventListener("click", () => {
menu.classList.toggle("hidden");
});
</script>
</nav>
@yield('content')
</body>
</html>
这是我的 web.php 文件:
Route::get('home', function () {
return view('home');
})->name('home');
Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
Route::post('/dashboard', [DashboardController::class, 'storePost']);
Route::post('/logout', [LogoutController::class, 'store'])->name('logout');
Route::get('/login', [LoginController::class, 'index'])->name('login');
Route::post('/login', [LoginController::class, 'login']);
Route::get('/register', [RegisterController::class, 'index'])->name('register');
Route::post('/register', [RegisterController::class, 'store']);
Route::get('/posts', [PostController::class, 'index'])->name('posts');
Route::get('/index', [PostController::class, 'index'])->name('overview');
Route::get('/portal/register', [PortalRegController::class, 'index'])->name('portal_register');
Route::post('/portal/register', [PortalRegController::class, 'store']);
Route::get('/portal/login', [PortalLoginController::class, 'showLoginForm'])->name('portal_login');
Route::post('/portal/login', [PortalLoginController::class, 'login'])->name('portal_login');
Route::post('/portal/logout', [PortalLogoutController::class, 'store'])->name('portal_logout');
我也尝试用 @if(Auth::guard('portal')->check()
以“丑陋”的方式实现它
但它没有改变任何东西。
我不确定你是否也需要 Controller 代码,但如果需要,我当然会向你展示,只是不想让 post 不必要地变大。
编辑:@auth('web')
工作得很好!
如果您需要检查非默认守卫的身份验证状态,您应该将守卫名称传递给指令,例如@guest('portal')
,请参阅此处 - https://laravel.com/docs/8.x/blade#authentication-directives
如标题所述,即使用户已通过身份验证,也会显示来宾标签内的内容。
我想在标准用户登录时在导航栏中显示仪表板路线,在“门户”用户登录时显示特定的注销按钮。
我的 auth.php 文件中有两个守卫(一个是标准的,传送门是我的自定义):
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'portal' => [
'driver' => 'session',
'provider' => 'portals'
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
'portal' => [
'driver' => 'eloquent',
'model' => App\Models\Portal::class,
],
这是我的 app.blade.php 中带有 @auth 标签的代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Finanzraketen</title>
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
<style>
.hintergrund{
background-image: url('/background.jpeg');
background-size: cover;
}
</style>
</head>
<body class="hintergrund">
<!-- Navbar goes here -->
<nav class="bg-white shadow-lg bg-gradient-to-r from-green-400 to-blue-500 mb-10">
<div class="max-w-full mx-auto px-4">
<div class="flex justify-between">
<div class="flex space-x-7">
<div>
<!-- Website Logo -->
<a href="#" class="flex items-center py-4 px-2">
<img src="/rakete-2.png" alt="Logo" class="h-8 w-8 mr-2">
<span class="font-semibold text-black text-lg">Finanzraketen</span>
</a>
</div>
<!-- Primary Navbar items -->
<div class="hidden md:flex items-center space-x-3 ">
<ul class="flex items-center pl-10 grid grid-cols-6 gap-10">
<a class="py-2 px-2 font-medium text-black rounded shadow transition
duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-100" href="{{ route('home') }}" class="p-3">Home</a>
<a class="py-2 px-2 font-medium text-black rounded shadow transition
duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-100" href="{{ route('overview') }}" class="p-3">Stellenanzeigen</a>
@auth('web')
<a href="{{ route('dashboard') }}" class="col-start-3 py-2 px-2 font-medium text-black rounded shadow transition
duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-100">Dashboard</a>
<a href="" class="col-start-4 py-2 px-2 font-medium text-black rounded shadow transition border-gray-500
duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-100">{{ auth()->user()->email }}</a>
<form action="{{ route('logout') }}" method="post" >
@csrf
<button type="submit" class="col-start-5 py-2 px-2 font-medium text-black rounded shadow transition
duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-100">Logout</button>
</form>
@endauth
@auth('portal')
<form action="{{ route('portal_logout') }}" method="post">
@csrf
<button type="submit" class="col-start-5 py-2 px-2 font-medium text-black rounded shadow transition
duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-100">Portal Logout</button>
</form>
@endauth
@guest
<a class="py-2 px-2 font-medium text-black rounded shadow transition
duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-100" href="{{ route('login') }}" class="p-3">Mitarbeiter Login</a>
<a class="py-2 px-2 font-medium text-black rounded shadow transition
duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-100" href="{{ route('register') }}" class="p-3">Registrieren</a>
<a class="py-2 px-2 font-medium text-black rounded shadow transition
duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-100" href="{{ route('portal_login') }}" class="p-3">Portal Login</a>
<a class="py-2 px-2 font-medium text-black rounded shadow transition
duration-500 ease-in-out transform hover:-translate-y-1 hover:scale-100" href="{{ route('portal_register') }}" class="p-3">Portal Registrieren</a>
@endguest
</ul>
</div>
</div>
<!-- Mobile menu button -->
<div class="md:hidden flex items-center">
<button class="outline-none mobile-menu-button">
<svg class=" w-6 h-6 text-black hover:text-green-400"
x-show="!showMenu"
fill="none"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
viewBox="0 0 24 24"
stroke="currentColor"
>
<path d="M4 6h16M4 12h16M4 18h16"></path>
</svg>
</button>
</div>
</div>
</div>
<!-- mobile menu -->
<div class="hidden mobile-menu">
<ul class="">
<li> <a class="block text-sm px-2 py-4 hover:bg-green-500 transition duration-300" href="{{ route('home') }}">Home</a></li>
<li> <a class="block text-sm px-2 py-4 hover:bg-green-500 transition duration-300" href="{{ route('overview') }}">Stellenanzeigen</a> </li>
@auth()
<li>
<a href="{{ route('dashboard') }}" class="block text-sm px-2 py-4 hover:bg-green-500 transition duration-300">Dashboard</a>
</li>
<li>
<a href="" class="block text-sm px-2 py-4 hover:bg-green-500 transition duration-300">{{ auth()->user()->email }}</a>
</li>
<li>
<form action="{{ route('logout') }}" method="post" class="block text-sm px-2 py-4 hover:bg-green-500 transition duration-300">
@csrf
<button type="submit">Logout</button>
</form>
</li>
@endauth
@guest
<li>
<a class="block text-sm px-2 py-4 hover:bg-green-500 transition duration-300" href="{{ route('login') }}" class="p-3">Mitarbeiter Login</a>
</li>
<li>
<a class="block text-sm px-2 py-4 hover:bg-green-500 transition duration-300" href="{{ route('register') }}" class="p-3">Registrieren</a>
</li>
<li>
<a class="block text-sm px-2 py-4 hover:bg-green-500 transition duration-300" href="{{ route('portal_register') }}" class="p-3">Bewerbungsportal Login</a>
</li>
@endguest
</ul>
</div>
<script>
const btn = document.querySelector("button.mobile-menu-button");
const menu = document.querySelector(".mobile-menu");
btn.addEventListener("click", () => {
menu.classList.toggle("hidden");
});
</script>
</nav>
@yield('content')
</body>
</html>
这是我的 web.php 文件:
Route::get('home', function () {
return view('home');
})->name('home');
Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
Route::post('/dashboard', [DashboardController::class, 'storePost']);
Route::post('/logout', [LogoutController::class, 'store'])->name('logout');
Route::get('/login', [LoginController::class, 'index'])->name('login');
Route::post('/login', [LoginController::class, 'login']);
Route::get('/register', [RegisterController::class, 'index'])->name('register');
Route::post('/register', [RegisterController::class, 'store']);
Route::get('/posts', [PostController::class, 'index'])->name('posts');
Route::get('/index', [PostController::class, 'index'])->name('overview');
Route::get('/portal/register', [PortalRegController::class, 'index'])->name('portal_register');
Route::post('/portal/register', [PortalRegController::class, 'store']);
Route::get('/portal/login', [PortalLoginController::class, 'showLoginForm'])->name('portal_login');
Route::post('/portal/login', [PortalLoginController::class, 'login'])->name('portal_login');
Route::post('/portal/logout', [PortalLogoutController::class, 'store'])->name('portal_logout');
我也尝试用 @if(Auth::guard('portal')->check()
以“丑陋”的方式实现它
但它没有改变任何东西。
我不确定你是否也需要 Controller 代码,但如果需要,我当然会向你展示,只是不想让 post 不必要地变大。
编辑:@auth('web')
工作得很好!
如果您需要检查非默认守卫的身份验证状态,您应该将守卫名称传递给指令,例如@guest('portal')
,请参阅此处 - https://laravel.com/docs/8.x/blade#authentication-directives