【问题标题】:Laravel 4 - Improve code to check for AuthenticationLaravel 4 - 改进代码以检查身份验证
【发布时间】:2015-05-12 10:34:11
【问题描述】:

我有一个带有资源轮询的 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', []);
}

这段代码工作得很好,但不是很cleancode。这一次,我在几个地方把它作为“管理员检查”。而且感觉不像是遵循“一个函数应该只做一件事”的做法。

我想知道是否有一种更简洁的方法来处理响应根据用户是否登录并且是管理员而发生变化的情况?

【问题讨论】:

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


    【解决方案1】:

    使用路由组和身份验证过滤器。

    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/

    【讨论】:

    • Route::group(array('before' => 'auth'), function() { // add all your resources here });
    • 你为什么要评论你自己的答案?只需编辑;)
    • @Kyslik 之前有一个问题...“我如何将过滤器添加到 Route::resource”
    • 无论哪种方式,好的做法都是编辑您的答案。正是因为这个原因。 ###Example 过去并完成。
    • @Kyslik 好的,谢谢你的提示,我更新了帖子。祝你有美好的一天。
    猜你喜欢
    • 2016-03-16
    • 2015-07-22
    • 2013-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    相关资源
    最近更新 更多