2016-05-06 94 views
1

我是laravel的新手,刚开始构建我的第一个laravel应用程序(v.5.2)。我来自codeigniter。在CI中,我曾经创建一个预控制器钩子来检查登录状态并在任何控制器加载之前设置语言。应用范围内的东西。我可以在Laravel 5中创建预控制器钩子

我找不到laravel文档中的前控制器挂钩上的任何内容。有一种叫做“中间件”的东西可以完成这项工作。这个中间件在什么时候启动? 我在正确的轨道上吗?或者有没有更好的方式在laravel做这些工作。

+0

这取决于您想要执行的操作。在系统不允许匿名用户访问受限页面的情况下,中间件主要涉及图片。 –

回答

0

是的,中间件是最好的选择。我正在使用身份验证中间件在我的应用程序中实现这种功能。

像下面一样。

public function __construct() 
    { 
     $this->middleware('auth' , ['except' => ['show']]);   
     parent::__construct($this); 
    } 

在这里,我想给的权限,只显​​示行动没有登录。

您还可以使用表单请求来检查每个操作的权限/身份验证。

1

是的,你可以用中间件来做到这一点。 中间件将在执行控制器的方法之前执行。

虽然我会建议你做一个基础控制器,你可以创建一个方法来做这些事情,并从基类的构造函数中调用该方法。

编辑

所以我刚才读您要检查,如果用户登录。为此,你必须auth中间件。

+0

您的意思是:创建MyController扩展控制器 并让所有应用程序控制器直接扩展该控制器而不是Controller? HomeController扩展MyController – micksp

+0

是的。我通常这样做。您将需要执行可以从您的基本控制器完成的各种常见任务。但请记住,如果任务是检查用户是否登录或是管理员等,那么中间件是您最好的朋友。 – Abhishek

0

对于Laravel 5#(5.2)

你可以有App\Http\Controllers\Controller

其实所有其他控制器的外观扩展了该基地控制器。

问题: 1.如果路由在这种情况下不使用控制器,则不起作用。

相关问题