6
我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
檢查兩個請求,即使第二路徑應檢查許可delete objects
。
原因似乎是/objects/delete/42
低於/objects
的路徑。同樣的問題並不與路線/prefs
,其不具有與其他路線的公共基地發生。
我目前的解決辦法是把規則/objects
低於的一個/objects/delete/:id
,但這是一個)unelegant和爲b)去當另一家開發商編輯該文件打破。我能否明確禁用在這種情況下看到的嵌套行爲?
這看起來非常簡單的行爲給我。而你所謂的解決方法是Mojolicious如何匹配路線的邏輯結果。海事組織你回答你的問題。 – 2012-07-20 09:28:40