laravel - 如何按小时锁定页面

and*_*ini -2 php laravel

我需要阻止用户从上午 9 点到下午 6 点访问某些页面。

那么,实现这一目标的最佳方法是什么?我应该创建一个中间件吗?还是内核条件?或者向控制器添加条件?

Dar*_*rke 8

中间件绝对适合这样的功能。

完整文档在这里。

快速版本:

  1. php artisan make:middleware TimeRestrictedMiddleware - 这将在 app/Http/Middleware 中创建一个名为的文件 TimeRestrictedMiddleware.php
  2. 在该文件的handle()方法中编写一些代码来检查您的时间限制并返回视图/响应以拒绝用户。
    public function handle($request, Closure $next)
    {
        if (Carbon::now()->format('H') >= 9 && Carbon::now()->format('H') <= 18) {
            //
            return response(view('some-view-to-deny'));
        }
        // default behaviour  
        return $next($request);
    }
Run Code Online (Sandbox Code Playgroud)
  1. 添加对新中间件的引用 -$routeMiddleware内部app/Http/Kernel.php
  2. 然后用中间件包装你的路由。
Route::group(['middleware' => ['time-restricted']], function () {
    // all routes that need time-restrictions
});

Run Code Online (Sandbox Code Playgroud)