Laravel 4 - 改进代码以检查身份验证

时间:2015-03-10 20:00:50

标签: php laravel laravel-4 laravel-routing code-cleanup

我有一个带有资源调查的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。这一次,我在几个地方做了“管理员检查”。此外,它并不觉得它遵循“功能应该只做一件事”的做法。

我想知道是否有更简洁的方法来处理响应变化的情况,具体取决于用户是否已登录并且是管理员?

1 个答案:

答案 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/

相关问题