OwlAdmin 自定义页面绑定后台权限,核心思路是通过中间件 + 路由控制,有几种方式:
1. 自定义路由添加中间件
在 routes/web.php 或 routes/admin.php 中定义自定义页面路由时,挂上 OwlAdmin 的认证中间件:
Route::middleware(['admin.auth'])->group(function () {
Route::get('/my-custom-page', [MyCustomController::class, 'index']);
});
OwlAdmin 默认的认证中间件是 Slowlyo\OwlAdmin\Http\Middleware\Authenticate,确保路由在中间件保护下即可。
2. 在 Admin 路由组内注册
更推荐的方式是直接在 OwlAdmin 的路由文件中注册,这样自动继承后台的权限体系:
// 在 owl_admin.php 或对应的 admin 路由文件中
$router->get('my-custom-page', [MyCustomController::class, 'index'])->name('my-custom-page');
这样页面就在后台布局内,自动需要登录才能访问。
3. 绑定具体权限(细粒度控制)
如果需要对自定义页面做细粒度权限控制(比如只有特定角色能访问),可以在后台「权限管理」中新增一条权限记录,然后在路由中用 admin.permission 中间件:
Route::middleware(['admin.auth', 'admin.permission:my-custom-page'])
->get('/my-custom-page', [MyCustomController::class, 'index']);
再到后台超级管理 → 权限管理中添加对应的权限节点,分配给指定角色即可。
4. 页面在后台布局外但需要后台登录
如果你的自定义页面不在后台 iframe 布局内(独立页面),只需确保使用 admin.auth 中间件即可拦截未登录用户,登录后跳回原页面。
关于框架选择的问题:每个框架有自己的设计哲学,OwlAdmin 基于 Laravel 的 Filament 生态,灵活度较高但文档确实偏少。遇到问题可以多看源码中的 Middleware 目录和路由定义,或者到 GitHub Issues 里搜索,社区响应还是比较快的。
关于 LearnKu
推荐文章: