2017-02-13 3 views
1

Ich habe ein Nancy-Modul mit mehreren Routen und möchte eine Sicherheitsprüfung für einen Parameter durchführen, der von jeder Route gemeinsam genutzt wird. Kann ich diesen Parameter irgendwie in die Hierarchie verschieben und den Check eine einzelne Zeile haben?Sichern mehrerer Routen mit einem gemeinsamen Parameter in Nancy Routing

Beispiel unter

bereitgestellt
public SomeModule() 
    { 
     //ABC 
     Get["/prefix/{someSharedParameter}/ABC/{noneSharedParameterA}"] = parameters => 
     { 
      this.RequiresSomethingArbitrary(parameters.someSharedParameter); 
      ... 
     }; 

     //XYZ 
     Get["/prefix/{someSharedParameter}/XYZ/{noneSharedParameterX}"] = parameters => 
     { 
      this.RequiresSomethingArbitrary(parameters.someSharedParameter); 
      ... 
     }; 

    } 

So würde ich das Kontroll RequiresSomethingArbitrary auf Modulebene zu können, wie hier setzen, aber nicht sicher, wie oder ob das überhaupt möglich ist.

EDIT: Ich hatte eine Idee nach dem Modul Basispfad herauszufinden, aber es kam kurz.
Das funktioniert nicht. Der Kontext ist null.

public SomeModule(): base("/prefix/{someSharedParameter}") 
    { 
     this.RequiresSomethingArbitrary(Context.Parameters.someSharedParameter); 
     //ABC 
     Get["/ABC/{noneSharedParameterA}"] = parameters => 
     { 

      ... 
     }; 

     //XYZ 
     Get["/XYZ/{noneSharedParameterX}"] = parameters => 
     { 
      ... 
     }; 

    } 

Ich habe auch versucht, nur die Prüfung zu tun, wenn Kontext null ist, weil ich es dachte, könnte das Modul nur initialisiert werden Fehler auf, aber dies wird nur immer die Überprüfung überspringen:

public SomeModule(): base("/prefix/{someSharedParameter}") 
    { 
     if (Context != null) { 
      //this is unreachable (?) 
      this.RequiresSomethingArbitrary(Context.Parameters.someSharedParameter); 
     } 
     //ABC 
     Get["/ABC/{noneSharedParameterA}"] = parameters => 
     { 
+0

Haben Sie es überhaupt versucht? –

+0

@tomredfern Ich hatte keine Ahnung, wonach ich suchen sollte, wenn ich die Frage gepostet habe. Seitdem habe ich herausgefunden, dass es möglich ist, einen Basispfad in einem Modul zu haben, was mir eine Idee gab, die nicht funktionierte. Ich hatte heute Morgen eine Idee, die ich jetzt versuchen werde. Ich werde meine Frage mit dem, was ich versucht habe, aktualisieren, hat aber nicht funktioniert. – narvoxx

Antwort

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

//route definitions go here 

} 

Alle Sie müssen den Check in den Konstruktor verschieben.

+0

Das kompiliert nicht, da 'someSharedParameter' nicht in diesem Bereich definiert ist. Ich werde mein Beispiel aktualisieren, wo ich eine kleine Abkürzung hatte, warum es in route defension Bereich – narvoxx

+0

definiert ist Ya gut, das wird nicht funktionieren, weil es auf 'Kontext' abhängt, die null ist, bis Sie eine Anfrage erhalten. Vielleicht ist es Zeit, Ihre zu überdenken Design. –

Verwandte Themen