这可能是除了我之外任何人都知道的东西,除了标题之外,我什至都不知道要搜索什么。
laravel等如何在__construct中使用方法中间件来仅在该类中的特定方法上调用它?
public function __construct() {
$this->middleware('auth')->only(['index']);
}
public function index() {
//Do something as auth..
}
public function show() {
//Do something without auth..
}
我进行了课程身份验证:
class Auth
{
public static function user() {
//Check is user logged in and redirect if not
}
}
在主Controller类中,我添加了方法:
public function middleware($who) {
Auth::$who();
}
public function only(array $methods) {
//Use middleware on using these methods
}
现在这是我的愚蠢之处:
当我打电话时说:
$this->middleware('user');
在某些方法中,它可以按预期工作。
但是当我在__constructor
中使用它时,它将在我调用的所有方法上运行,那么我该如何检查哪些方法应该使用构造函数中的中间件方法呢?
答案 0 :(得分:0)
快速检查laravel的来源,您将得到答案。
您可以在laravel控制器$this->middleware('auth')->only(['index']);
中做到这一点
因为每个控制器都应该扩展laravel提供的抽象控制器。
抽象控制器具有称为middleware
的方法,该方法将有关应调用哪种中间件的信息添加到特定的方法/路由。
如果您要从laravel检查中间人,您将找到另一个答案,中间人如何检查他们如何获取并尊重此信息。