php - 管理员如何使用 Laravel 5.8 在维护模式下访问站点?
问题描述
我想使用维护模式,但我不知道之后如何以管理员身份访问我的网站。我应该怎么办?
最后的目标是让管理员使用按钮或其他东西进入/退出维护模式。
我用它来验证管理员是否确实进入了管理页面。
if(Auth::user()->role_id == 1)
那么,如果用户是管理员,我该如何从维护模式中排除呢?
太感谢了..
解决方案
将现有中间件替换app/Http/Middleware/CheckForMaintenanceMode.php
为以下内容:
<?php
namespace App\Http\Middleware;
use closure;
use Illuminate\Foundation\Http\Exceptions\MaintenanceModeException;
use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode as Middleware;
class CheckForMaintenanceMode extends Middleware
{
public function handle($request, Closure $next)
{
if (!$this->isAdmin() && $this->app->isDownForMaintenance()) {
$data = json_decode(file_get_contents($this->app->storagePath() . '/framework/down'), true);
throw new MaintenanceModeException($data['time'], $data['retry'], $data['message']);
}
return $next($request);
}
private function isAdmin()
{
return optional(auth()->user())->role_id == 1;
}
}
笔记:
isAdmin()
是定义管理员用户标准的函数。您可以根据您的自定义标准对其进行更改。您可以更好地将此函数放置在User
模型中以实现可重用性。
希望能帮助到你!
推荐阅读
- scikit-learn - Scikit-learn CountVectorizer:自定义预处理器、标记器和分析器
- html - 删除子div和父div之间的单个像素间隙
- python - 如何组合名称包含来自两个字典的单词的 CSV 文件?
- javascript - 由于 CPU 利用率高,Elastic Beanstalk 环境降级
- cucumber - 是否可以在不同的步骤文件中保留与 BDD 相同的会话 ID
- amazon-web-services - Eb Deploy 部署旧运行版本
- oracle - SQL 中的 CASE 表达式引发 ORA-00905
- testing - 在 CakePHP 测试中使用测试数据而不是固定装置
- ios - 导航返回按钮返回错误的视图控制器
- r - 在 R 中创建频率矩阵的聚合函数