【问题标题】:Laravel 4 authentication. Restrict access to some functions of a resource but not allLaravel 4 身份验证。限制对资源的某些功能的访问,但不是全部
【发布时间】:2013-09-09 21:17:46
【问题描述】:

我有这个博客资源,它具有常用的 CRUD 方法。(索引、创建、存储、显示、编辑、更新、销毁)。

我的 routes.php 中有以下路由:

Route::resource('blog', 'PostsController');

但我想限制除索引和显示之外的所有内容。 所以我有

Route::get('blog', 'PostsController@index');
Route::group(array('before' => 'auth'), function()
{
    Route::resource('blog', 'PostsController');
});

这对索引很好,但我不知道如何路由显示方法?还是有其他方法?我应该单独路由每个 URI 并将我想要限制的那些放在我的受限访问路由中,而不是路由资源?

干杯

【问题讨论】:

    标签: php authentication laravel laravel-4 laravel-routing


    【解决方案1】:

    Laravel 有一个功能可以让你在控制器的 __construct 方法中使用 $this->beforeFilter 指定过滤器。此函数采用第二个参数,允许您提供异常(或仅对某些方法启用过滤器)。尝试使用您的原始路由文件并像这样设置您的控制器:

    class PostsController extends BaseController {
    
        function __construct() {
            // ...
            $this->beforeFilter('auth', array('except' => array('index', 'show')));
            // ...
        }
    
        // ...
    

    请参阅Laravel documentation 中的控制器过滤器。它的文档并不完整,但您也可以从 here 开始更深入地了解 Laravel 的核心。

    【讨论】:

    • 感谢似乎是一个有效的选项
    • 正是我想要的。 Laravel 很棒。
    【解决方案2】:

    在 Laravel 5 中,您可以像这样使用中间件函数:

    $this->middleware('auth', array('except' => array('index', 'show')));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-05
      • 2014-02-04
      • 1970-01-01
      • 2020-03-30
      • 1970-01-01
      • 2020-04-28
      相关资源
      最近更新 更多