2017-02-13 37 views
1

У меня есть модуль 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 => 
     { 
+0

Вы даже попробовали? –

+0

@tomredfern Я понятия не имел, что даже искать, когда я разместил вопрос. С тех пор я обнаружил, что в модуле есть базовый путь, который дал мне представление, которое не закончилось. Сегодня утром у меня была идея, что я сейчас буду пытаться. Я уточню свой вопрос тем, что я пробовал, но не работал. – narvoxx

ответ

0
public SomeModule(){ 
this.RequiresSomethingArbitrary(someSharedParameter); 

//route definitions go here 

} 

Все вам нужно сделать переход на конструктор.

+0

Это не компилируется, потому что 'someSharedParameter' не определен в этой области. Я обновлю свой пример, где у меня был небольшой ярлык, почему он определен в области ограничения пути – narvoxx

+0

Я хорошо это не сработает, потому что это зависит от 'context', который равен null, пока вы не получите запрос. Можете ли вы переосмыслить свои дизайн. –

 Смежные вопросы

  • Нет связанных вопросов^_^