【发布时间】:2018-09-26 02:48:09
【问题描述】:
我使用 Laravel 5.6。
我需要在控制器中分配两个不同的中间件,使用相同的方法但不同的 REQUEST 方法(post 和 put)。
我知道可以分配到route/web.php。
但我只是想知道有没有办法在 ONLY CONTROLLER 中解决这个问题?
这是下面的代码
namespace App\Http\Controllers\Users;
use Illuminate\Http\Request;
use App\Http\Controllers\Admin\Auth\AuthPagesController;
class Users extends AuthPagesController
{
//
public function __construct()
{
//this middleware should be for POST request
$this->middleware('permission:User -> Add Item')->only('save');
//this middleware should be for PUT request
$this->middleware('permission:User -> Update Item')->only('save');
}
public function save(Request $req, $id=null){
if ($req->isMethod('post')){
//only check for middleware 'permission:User -> Add Item'
//then run the 'Add Item' code
}elseif($req->isMethod('put')){
//only check for middleware 'permission:User -> Update Item'
//then run the 'Update Item' code
}
}
}
但是上面的代码会给我带来问题,因为它会检查 BOTH MIDDLEWARE。
【问题讨论】:
-
试试
request()->method() -
我强烈建议不要在中间件中进行授权。当你试图变得更细化时,你会遇到各种各样的问题。
标签: php laravel controller middleware