我有一个带有资源 Poll 的 Laravel 4 应用程序
// routes.php
Route::resource('polls', 'PollController');
我不希望任何人能够列出所有民意调查,除非用户经过身份验证并且他是管理员。这是我的解决方案:
// PollController.php
public function index() {
if (Auth::check() && Auth::user()->admin) {
return View::make('polls.index', Poll::all());
}
return View::make('polls.create', []);
}
这段代码工作得很好,但它不是很干净的代码。这一次,我将其作为几个地方的"管理员检查"。此外,它也不觉得它遵循"一个函数应该只做一件事"的做法。
我想知道是否有一种更干净的方法来处理响应根据用户是否登录并且是管理员而变化的情况?
使用路由组和身份验证筛选器。
http://laravel.com/docs/4.2/routing#route-groups
http://laravel.com/docs/4.2/security#protecting-routes
例
Route::group(array('before' => 'auth'), function()
{
// Route::resource('poll', 'PollController');
// Additional routes
}
这是一个关于Laravel(以及您的主题)的精彩教程系列;http://culttt.com/2013/09/16/use-laravel-4-filters/