You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel Blade视图中校验Admin中间件 给管理员展示指定导航链接

实现方法

你已经在用户表加了is_admin标识字段,直接在Blade视图层做判断就能实现导航链接的显隐控制,你写的Admin中间件更适合用于路由层面的访问拦截,两者搭配使用更安全。以下是两种常用实现方案:

方案1:直接在导航栏模板写判断逻辑

这是最简单的实现方式,不需要额外配置,直接在需要控制的链接外层套权限判断即可:

@auth
    {{-- 所有登录用户都可见的链接 --}}
    <a href="{{ route('user.dashboard') }}">个人中心</a>

    {{-- 仅管理员可见的链接 --}}
    @if(Auth::check() && Auth::user()->is_admin == 1)
        <a href="{{ route('admin.dashboard') }}">管理后台</a>
        <a href="{{ route('admin.user_manage') }}">用户管理</a>
    @endif
@endauth

方案2:自定义Blade指令(适合多场景复用)

如果项目多处需要判断管理员权限,可以封装自定义Blade指令,后续调用更简洁:

  • 首先在app/Providers/AppServiceProvider.php的boot方法中注册指令:
use Illuminate\Support\Facades\Blade;

public function boot()
{
    Blade::if('admin', function () {
        return auth()->check() && auth()->user()->is_admin === 1;
    });
}
  • 之后在任意Blade模板中都可以直接使用@admin指令:
@auth
    {{-- 普通登录用户可见链接 --}}
    <a href="{{ route('user.dashboard') }}">个人中心</a>

    {{-- 仅管理员可见区域 --}}
    @admin
        <a href="{{ route('admin.dashboard') }}">管理后台</a>
        <a href="{{ route('admin.user_manage') }}">用户管理</a>
    @endadmin
@endauth

重要提示:视图层的显隐只是前端展示控制,所有管理员相关的路由必须绑定你编写的Admin中间件做访问拦截,避免普通用户直接输入URL访问管理员功能,路由配置示例:

// 管理员路由组
Route::prefix('admin')->middleware('admin')->group(function () {
    Route::get('dashboard', [AdminController::class, 'dashboard'])->name('admin.dashboard');
    Route::get('user_manage', [AdminController::class, 'userManage'])->name('admin.user_manage');
});

内容的提问来源于stack exchange,提问作者Osama Amr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:18:00