首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >中间件级别

中间件级别
EN

Stack Overflow用户
提问于 2019-01-13 04:01:49
回答 2查看 167关注 0票数 0

我是新手,在中间件方面有一个问题。在laravel官方网站上,我找到了创建控制器的代码。

当我创建控制器时,建议在构造函数中添加中间件,或者只有当我需要一些额外的功能时才这样做?

另外,如果我包含身份验证中间件,我是否默认获得了一些好处,比如安全检查或类似的,或者我必须首先重写中间件代码?

代码语言:javascript
复制
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');
  }
}
EN

回答 2

Stack Overflow用户

发布于 2019-01-13 04:11:51

当您想要过滤进入应用程序的HTTP请求时,可以使用Middleware

例如,包括内置的auth中间件将限制未经身份验证的用户访问页面,并将他们重定向到登录屏幕。

您可以在您的控制器和路由中包含中间件。

在控制器中,你可以这样做:

代码语言:javascript
复制
public function __construct()
{
    $this->middleware('auth');
}

对于路由,您可以执行以下操作:

代码语言:javascript
复制
Route::get('/page', 'MyController@myMethod')->middleware('auth');

当我创建控制器时,我需要包括这部分代码吗?

正如我在我的评论中所说的,这真的取决于你是否使用它所需的功能。

示例

你的主页应该对访问你网站的任何人都是可访问的,而你的仪表板应该只对经过身份验证的用户显示。

这就是包含身份验证中间件的地方。

票数 1
EN

Stack Overflow用户

发布于 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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54163382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档