我是laravel的新手,中间件有一个问题。在laravel官方网站上,我找到了用于创建控制器的代码。
创建控制器时,建议在构造函数中添加中间件,否则仅当我需要一些其他功能时?
此外,如果我包括身份验证中间件,我是否在默认情况下获得了一些好处,例如安全检查或类似检查,还是必须先重写中间件代码?
class UserController extends Controller {
/**
* Instantiate a new controller instance.
*
* @return void
*/
public function __construct() {
**//this part includes some protection or similar by default ?**
$this->middleware('auth');
}
}
答案 0 :(得分:1)
Middleware用于过滤进入您的应用程序的HTTP
请求。
例如,包括内置的auth
中间件将限制未经身份验证的用户访问页面并将他们重定向到登录屏幕。
您可以将中间件包含在控制器和路由中。
在控制器中您可以这样做:
public function __construct()
{
$this->middleware('auth');
}
对于路线,请执行以下操作:
Route::get('/page', 'MyController@myMethod')->middleware('auth');
是否创建控制器时是否需要包括这部分代码?
正如我在评论中所说,是否使用它实际上取决于所需的功能。
示例
访问您网站的任何人都应该可以访问您的主页,而您的仪表板应仅向经过身份验证的用户显示。
您将在其中包含auth中间件。
答案 1 :(得分:0)
问题1
您是否需要在控制器中使用Field.setAccessible()
?
答案::仅当您想保护该控制器的所有方法不受未经身份验证的用户访问,并且仅允许已登录的用户访问控制器操作时。
问题2
使用$this->middleware('auth');
中间件是否有好处?
答案:是的,只有经过身份验证的用户才能访问受auth
保护的控制器或路由。
**问题#3 **
您需要编写自己的中间件吗?
答案:仅当您需要覆盖中间件或需要尚未提供的其他功能(auth
)时,但是如果要滚动使用自己的登录功能,则可能需要/想要创建自己的中间件。
资源:
查看php artisan make:auth
,您将看到App\Http\Kernel.php
数组将$routeMiddleware
中间件与auth
匹配,这实际上验证了当前用户是否已登录并允许他们通过,如果未登录,则会将其重定向到“ /登录”路由。
您将看到Laravel默认使用大量中间件,例如启动会话,加密cookie和防止CSRF伪造。
有几种实现中间件的方法,我相信您已经在文档中看到了。
一些有用的视频教程:
我建议您在\Illuminate\Auth\Middleware\Authenticate::class
上观看通常以Laravel from Scratch
为标题的每个免费系列。我还建议您观看从Laravel 5.7到5.1或5.0的所有内容,因为Jeffrey Way在相似的情况下可能会使用不同的技术,它将为您提供一些很好的技巧和有用的信息,帮助您了解事物如何与Laravel的一些最佳实践一起使用。办法。我已经订阅了多年,每天都在Laravel工作,但从观看他的视频中我仍然学到了一些新东西,订阅很容易得到他收费的10到20。