У меня есть модуль nancy с несколькими маршрутами и вы хотите выполнить проверку безопасности параметра, который разделяется каждым из маршрутов. Могу ли я каким-то образом переместить этот параметр «вверх в иерархию» и проверить, должна ли быть одна строка?Защита нескольких маршрутов с общим параметром в маршрутизации Nancy
Пример приведен ниже
public SomeModule()
{
//ABC
Get["/prefix/{someSharedParameter}/ABC/{noneSharedParameterA}"] = parameters =>
{
this.RequiresSomethingArbitrary(parameters.someSharedParameter);
...
};
//XYZ
Get["/prefix/{someSharedParameter}/XYZ/{noneSharedParameterX}"] = parameters =>
{
this.RequiresSomethingArbitrary(parameters.someSharedParameter);
...
};
}
Так что я хотел бы иметь возможность поставить галочку RequiresSomethingArbitrary
на уровне модуля здесь, но не знаю, как или, если это вообще возможно.
EDIT: У меня возникла идея, когда я узнал, что базовый путь модуля, но он был коротким.
ЭТО НЕ РАБОТАЕТ. Контекст имеет значение null.
public SomeModule(): base("/prefix/{someSharedParameter}")
{
this.RequiresSomethingArbitrary(Context.Parameters.someSharedParameter);
//ABC
Get["/ABC/{noneSharedParameterA}"] = parameters =>
{
...
};
//XYZ
Get["/XYZ/{noneSharedParameterX}"] = parameters =>
{
...
};
}
Я также попытался только делать проверку, если контекст является нулевым, потому что я полагал, что это может быть провал на инициализацию только модуль, но это будет просто всегда пропустить проверку:
public SomeModule(): base("/prefix/{someSharedParameter}")
{
if (Context != null) {
//this is unreachable (?)
this.RequiresSomethingArbitrary(Context.Parameters.someSharedParameter);
}
//ABC
Get["/ABC/{noneSharedParameterA}"] = parameters =>
{
Вы даже попробовали? –
@tomredfern Я понятия не имел, что даже искать, когда я разместил вопрос. С тех пор я обнаружил, что в модуле есть базовый путь, который дал мне представление, которое не закончилось. Сегодня утром у меня была идея, что я сейчас буду пытаться. Я уточню свой вопрос тем, что я пробовал, но не работал. – narvoxx