我有一个带有资源调查的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', []);
}
此代码工作得很好,但它不是clean code。这一次,我在几个地方做了“管理员检查”。此外,它并不觉得它遵循“功能应该只做一件事”的做法。
我想知道是否有更简洁的方法来处理响应变化的情况,具体取决于用户是否已登录并且是管理员?
答案 0 :(得分:2)
使用路线组和验证过滤器。
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/