Laravel 中间件/路由组
Posted
技术标签:
【中文标题】Laravel 中间件/路由组【英文标题】:Laravel Middleware / Route Groups 【发布时间】:2016-12-09 06:36:32 【问题描述】:我对 Laravel 还很陌生,所以这个问题对某些人来说可能很明显。
在每个 HTTP 请求运行检查的情况下,例如 用户身份验证。是否有更好、更有效或更简单的正确方法来运行这些检查。从我最初的研究来看,这似乎可以使用中间件来完成,例如。
public function __construct()
$this->middleware('auth');
似乎也可以使用路由组,例如。
Route::group(['middleware' => 'auth'], function ()
Route::get('/', function ()
// Uses Auth Middleware
);
Route::get('user/profile', function ()
// Uses Auth Middleware
);
);
这两种方式中的任何一种都有什么好处吗?除了不必在每个控制器身份验证中添加 $this->middleware('auth');
的明显好处之外,还需要检查。
谢谢
编辑..
在接受您的建议后,我尝试使用路由分组来控制我的 Auth MiddleWare。但这似乎破坏了我的网站。
Route::group(['middleware' => 'auth'], function ()
Route::auth();
Route::get('/home', 'HomeController@index');
Route::get ( '/redirect/provider', 'SocialAuthController@redirect' );
Route::get ( '/callback/provider', 'SocialAuthController@callback' );
);
我是否遗漏了一些明显的东西?
【问题讨论】:
它做同样的事情,所以选择你喜欢的任何方式,并坚持下去 所以他们绝对没有区别?Route::auth ();
只是声明所有用于注册和登录的路由的一种方式。如果您使用不错的 IDE,您可以单击并转到方法定义,它会显示正在创建的路由。 Laravel 使用了很多抽象、魔术方法和多重继承,所以一个好的 ide 是必须的
你能推荐一个与 Laravel 一起使用的好主意吗?
phpstorm 如果你愿意花几英镑,Netbeans 如果你不愿意。
【参考方案1】:
没有真正的区别,我个人使用标准中间件的组并将异常放入构造中
【讨论】:
只使用一次或两次的中间件,例如特定页面的年龄门【参考方案2】:使用路由组很容易维护/修改,否则你必须记住你使用某些中间件的每个控制器,当然这在中小型应用程序中不是问题,但这在大型应用程序,其中有很多控制器和对中间件的引用。
【讨论】:
从https://vi.stackfinder.net/questions/38745291/laravel-middleware-route-groups
得到源【参考方案3】:
你快到了,只需删除Route::auth()
:
Route::group(['middleware' => 'auth'], function ()
Route::get('/home', 'HomeController@index');
//add more Routes here
);
【讨论】:
【参考方案4】:建议的选项对我不起作用,但是当我检查 laravel 文档时,我发现:
Route::middleware(['web'])->group(function ()
//Your routes here
);
它对我有用。 Laravel 8.*
【讨论】:
以上是关于Laravel 中间件/路由组的主要内容,如果未能解决你的问题,请参考以下文章