我是新手,在中间件方面有一个问题。在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');
}
}发布于 2019-01-13 04:11:51
当您想要过滤进入应用程序的HTTP请求时,可以使用Middleware。
例如,包括内置的auth中间件将限制未经身份验证的用户访问页面,并将他们重定向到登录屏幕。
您可以在您的控制器和路由中包含中间件。
在控制器中,你可以这样做:
public function __construct()
{
$this->middleware('auth');
}对于路由,您可以执行以下操作:
Route::get('/page', 'MyController@myMethod')->middleware('auth');当我创建控制器时,我需要包括这部分代码吗?
正如我在我的评论中所说的,这真的取决于你是否使用它所需的功能。
示例
你的主页应该对访问你网站的任何人都是可访问的,而你的仪表板应该只对经过身份验证的用户显示。
这就是包含身份验证中间件的地方。
发布于 2019-01-13 04:32:48
问题#1
您需要在控制器中使用$this->middleware('auth');吗?
回答:如果您想保护该控制器的所有方法不被未经身份验证的用户访问,并且只允许登录的用户访问控制器操作,则仅限。
问题#2
您从使用auth中间件中获得好处了吗?
回答:是的,只有经过身份验证的用户才能访问受auth保护的控制器或路由。
**问题#3**
您需要编写自己的中间件吗?
回答:仅当您需要覆盖中间件或需要尚未提供的额外功能(php artisan make:auth)时才使用,但是如果您正在使用自己的登录功能,那么您可能需要/想要创建自己的中间件。
资源:
查看App\Http\Kernel.php,您将看到$routeMiddleware数组将auth中间件与登录匹配,这实际上验证了当前用户是否已登录并允许他们通过,如果他们没有登录,则会将他们重定向到“/ \Illuminate\Auth\Middleware\Authenticate::class”路由。
您将看到Laravel在默认情况下使用了相当多的中间件,例如启动会话、加密cookie和防止CSRF伪造。
有几种方法可以实现中间件,我相信您在文档中看到了这些方法。
一些有用的视频教程:
我建议你在Laracasts.com上观看通常名为Laravel from Scratch的每一个免费系列。我还建议观看从Laravel 5.7到5.1或5.0的所有版本,因为Jeffrey way可能会在类似的情况下使用不同的技术,它将为您提供大量的提示和有用的信息,让您了解事物是如何工作的,以及一些Laravel的最佳实践。我已经订阅他多年了,每天在Laravel工作,我仍然从观看他的视频中学到一些新的东西,订阅很容易值他收费的10-20。
https://stackoverflow.com/questions/54163382
复制相似问题