Я хочу создать промежуточное программное обеспечение в своем проекте laravel, чтобы проверить, какой тип пользователя вошел в систему на моем веб-сайте. Идея состоит в том, что я проверяю, вошел ли пользователь в систему промежуточного слоя, а затем устанавливаю переменную сеанса в определенное значение.
Это промежуточное ПО:
CheckIfLoggedin.php
use Closure;
use Auth;
class CheckIfLoggedin
{
public function handle($request, Closure $next)
{
if (Auth::check()) {
$request->session()->put('loggedin', 'admin');
}
return $next($request);
}
}
Я зарегистрировал его как глобальное промежуточное ПО, как описано в документации, добавив эту строку в Kernel.php:
protected $middleware = [
// ...
\App\Http\Middleware\CheckIfLoggedin::class,
];
И я проверяю значение этой переменной сеанса в своем шаблоне блейда следующим образом:
@if(session('loggedin'))
<!-- some html code -->
@endif
Я знаю, что я также могу использовать это для проверки входа:
@auth
<!-- some html code -->
@endauth
но причина использования этой переменной сеанса заключается в том, что у меня будут разные типы членов (например, member
или admin
), и позже я назначу тип входа в эту переменную сеанса, тогда он должен работать следующим образом в шаблоне блейда:
@if(session('loggedin')=='member')
<!-- some html code that only members can see -->
@elseif(session('loggedin')=='admin')
<!-- some html code that only admins can see -->
@endif
Любые идеи о том, почему это промежуточное программное обеспечение не работает так, как я ожидаю? Обратите внимание, что я довольно новичок в Laravel, хотя...
Спасибо!