2

我有 CartController 路由过滤器似乎只能在控制器上绑定或获取,我可以在“动作”上进行身份验证过滤吗?

例如:

<?php

CartController extends BaseController {

    public function getIndex() {
        // not need filter
    }

    public function getList()
    {
        // not need filter
    }

    public function getCheck()
    {
        // need to filter
    }

}
4

4 回答 4

11

您可以在 Class 构造函数中设置 BaseController beforeFilter() 操作,并将要过滤的操作作为“唯一”键控数组作为第二个参数传递。

$this->beforeFilter('filtername', 
                    array('only' => array('fooAction', 'barAction')));

使用您的示例代码:

<?php

CartController extends BaseController {

    public function __construct() {

        $this->beforeFilter('filtername', array('only' =>
                            array('getCheck')));
    }

    public function getIndex() {
        // not need filter
    }

    public function getList()
    {
        // not need filter
    }

    public function getCheck()
    {
        // need to filter
    }

}

来源:Laravel 文档:控制器过滤器

于 2013-09-19T09:19:42.067 回答
0

似乎您想在同一个控制器中将 RESTful 和普通方法(get/post vs action)混合在一起,至少在 Laravel 3 中这是无法做到的。

对于过滤,您可以查看控制器过滤器,您可以在其中为特定方法指定身份验证过滤器,或者反之,从过滤器中排除某些方法。

于 2013-09-01T04:58:29.687 回答
0

您可以在您需要的方法中调用过滤器。

请参阅此处的文档以查看代码中的内容。

 $this->beforeFilter('my-filter-name');
于 2013-09-01T18:30:08.750 回答
0

我在资源控制器上遇到了类似的问题,并且能够做到这一点:

$this->beforeFilter('admin', [ 'except' => ['index','show'] ]);
于 2014-10-21T22:31:19.287 回答