マイMojoliciousのアプリケーションは、私がルーティング条件に実装いくつかのカスタム認証メカニズムを、持っていauth_permission
と呼ばれる:だから私のルートは、このようなものになりなぜMojoliciousは私のルートを入れ子にするのですか?
$app->add_condition(auth_permission => sub {
return is_user_allowed(...) ? 1 : 0;
});
:
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(...);
をto()
条項が正しく処理されます。 GET /objects
は私にオブジェクトリストを与え、GET /objects/delete/42
はオブジェクト42を削除します。
問題は許可view objects
は、2つ目のルートがアクセス許可delete objects
を確認する必要がある場合でも、両方の要求が確認されます。
/objects/delete/42
は、/objects
以下のパスであると考えられます。同じ問題は他のルートと共通の基盤を持たないルート/prefs
では発生しません。
私の現在の回避策は/objects/delete/:id
ため/objects
以下のいずれかのルールを配置することですが、それはa)はunelegantだと、b)別の開発者がファイルを編集するとき破るしようとしています。この場合のネスティング動作を明示的に無効にすることはできますか?
これは私にとってはまっすぐ正直なようです。そしてあなたのいわゆる回避策は、Mojoliciousがルートとどのようにマッチするかの論理的な結果です。あなたはあなたの質問に答えました。 –