Laravel 4认证.限制对资源的某些功能的访问,但不是全部

Ben*_*son 6 php authentication laravel laravel-4 laravel-routing

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

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

Route::resource('blog', 'PostsController');
Run Code Online (Sandbox Code Playgroud)

但我想限制所有,但索引和显示.所以我有

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

这对索引很好,但我不知道如何路由show方法?或者还有另一种方式吗?我应该单独路由每个URI并将我想要的那些限制在我的受限访问路径中,而不是路由资源吗?

干杯

Jon*_*set 13

Laravel有一个功能,允许您使用控制器的__construct方法指定过滤器$this->beforeFilter.此函数采用第二个参数,允许您提供异常(或仅为某些方法启用过滤器).尝试使用原始路由文件并按如下方式设置控制器:

class PostsController extends BaseController {

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

    // ...
Run Code Online (Sandbox Code Playgroud)

请参阅Laravel文档中的Controller Filters .它并没有完全记录在案,但你也可以从这里开始深入了解Laravel的内脏.