使用 Laravel 4 在路线组上添加更多过滤器选项


Adding more filter options on route groups with Laravel 4

我正在使用postmarkapp的入站服务在网络钩子上接收JSON格式的电子邮件。就我而言,我有一个接受HTTP POST来存储邮件的电子邮件控制器。

它的设置如下:

Route::group(array('before' => 'auth'), function()
{
    Route::resource('emails', 'EmailController');
});

我需要路由组不过滤与控制器上的存储操作相关的 POST。我试过使用:

array('before' => 'auth', 'except' => 'post')
array('before' => 'auth', 'except' => 'store')

所以我真的不知道在哪里做这个。在过滤器本身也许?另外,我在执行异常时是使用操作名称还是 HTTP 动词?

作为额外的:我也不完全习惯像这样向每个人开放路由操作。关于如何确保只有邮戳应用程序在那里发布的任何想法?

谢谢!

创建自己的过滤器并向其添加适当的逻辑。例如:

Route::get('test', ['before' => 'foo']);
Route::filter('foo', function($route, $request) {
    if ($request->getClientIp() === 'xxx.xxx.xxx.xxx')
    {
            //...
    }
    if ($request->getMethod() === 'POST'))
    {
            //...
    }
});
'

''

还可以为更复杂的筛选器创建筛选器类。阅读 http://four.laravel.com/docs/routing#route-filters 中的部分。