codeigniter 4个过滤器,除

kuarbcqp  于 2023-01-22  发布在  其他
关注(0)|答案(1)|浏览(159)

目前正在试验Codeigniter 4过滤器,用于管理部分。
在$filters上,我可以像这样排除一个函数吗:

public $filters = [
    'authenticate' => [
        'before' => [
            'admin/*',
        ],
        'except' => [
            'admin/verify'
        ],
    ],
];

因此,它基本上添加过滤器'authenticate'到每个管理控制器,除了验证一个。
好像不管用。
还想在这个$filters变量上使用如下参数:

public $filters = [
    'authenticate:admin' => [

也不起作用。
我能使它在路由上工作吗,但是我需要指定所有的控制器函数来使过滤器工作。参数也在路由上工作。
谢谢

6uxekuva

6uxekuva1#

文件提到这一点非常糟糕:
在过滤器设置中可以使用URI的任何地方,都可以使用正则表达式,或者像本例中那样,使用星号作为通配符,该通配符将匹配其后的所有字符。
所以你可以使用一个普通的正则表达式来实现你的目标。例如,如果你想让user/*的所有路由都通过authentication过滤器,而不是user/settings,这是一个可行的方法:

public $filters = [
    "authentication" => [
        "before" => [
            "/user\/(?!settings)/",
        ]
    ]
];

相关问题