Laravel框架中使用构造函数来限制对控制器的访问

2023-06-01 00:00:00 函数 构造 控制器

在laravel应用程序中,我们经常需要限制用户进行某些操作或功能。

大多数Laravel开发人员在 route.php 或 api.php 文件中使用 auth 中间件。

我们还可以使用控制器构造函数来分配中间件。

它更方便,因为它将中间件限制为仅控制器类上的特定方法。

我们可以通过以下方式做到这一点:

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;

class HomeController extends Controller
{
   //
   public function __cinstruct()
   {
       # code...
       return $this->middleware('auth');
   }
   
   public function index()
   {
       # code...
       return view('home.index');
   }
}


如果要限制特定功能,可以使用only()方法。

比方说,我需要将我的身份验证中间件应用于索引方法。

然后代码将是:

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;

class HomeController extends Controller
{
   //
   public function __cinstruct()
   {
       # code...
       return $this->middleware('auth')->only(['index']);
   }
   
   public function index()
   {
       # code...
       return view('home.index');
   }
}


我们还可以对除一种方法之外的所有方法应用限制。

因此,如果我希望中间件适用于除索引之外的所有功能,代码将是:

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;

class HomeController extends Controller
{
   //
   public function __cinstruct()
   {
       # code...
       return $this->middleware('auth')->except(['index']);
   }
   
   public function index()
   {
       # code...
       return view('home.index');
   }
}

相关文章