我的Mojolicious应用程序有一些自定义身份验证机制,我在一个名为的路由条件中实现auth_permission:
$app->add_condition(auth_permission => sub {
return is_user_allowed(...) ? 1 : 0;
});
Run Code Online (Sandbox Code Playgroud)
所以我的路线看起来像这样:
my $r = $app->routes;
$r->get('/prefs')
# no permission necessary here
->to(...);
$r->get('/objects')
->over(auth_permission => 'view objects')
->to(...);
$r->get('/objects/delete/:id')
->over(auth_permission => 'delete objects')
->to(...);
Run Code Online (Sandbox Code Playgroud)
该to()条款正确处理:GET /objects给我的对象列表,并GET /objects/delete/42删除对象42.
问题是view objects,即使第二条路由应检查权限,也会检查两个请求的权限delete objects.
原因似乎/objects/delete/42是下面的路径/objects.路由不会出现同样的问题,该路由/prefs与其他路由没有共同的基础.
我目前的解决方法是将规则/objects 放在一个以下/objects/delete/:id,但这是a)不优雅,并且b)在另一个开发人员编辑文件时破解.我可以明确禁用在这种情况下看到的嵌套行为吗?
| 归档时间: |
|
| 查看次数: |
387 次 |
| 最近记录: |