2014-07-03 8 views
8

Ich bin ziemlich neu in Nancy und experimentiere jetzt mit Auth. Ich freue mich darauf, die Formularauthentifizierung vollständig zu implementieren.Per-Route-Authentifizierung verursacht RouteExecutionEarlyExitException

Zu Testzwecken habe ich 3 Module eingerichtet.

Andere Modul:

public class OtherModule : NancyModule 
{ 
    public OtherModule() : base() 
    { 
     // Use global, module level authentication. 
     this.RequiresAuthentication(); 

     Get["/other"] = _ => 
     { 
      return "Other"; 
     }; 

     Get["/woot"] = _ => 
     { 
      return "Woot"; 
     }; 
    } 
} 

Hauptmodul:

public class MainModule : NancyModule 
{ 
    public MainModule() : base() 
    { 
     Get["/yolo"] = _ => 
     { 
      // Use per-route authentication. 
      this.RequiresAuthentication(); 

      return "#YOLO"; 
     }; 
    } 
} 

AuthModule:

public class AuthModule : NancyModule 
{ 
    public AuthModule() : base() 
    { 
     Get["/login"] = _ => 
     { 
      return "To proceed, you must authenticate. [show form]"; 
     }; 
    } 
} 

Nun WHE n Navigieren Sie zu /other und/oder /woot, ich werde wie erwartet zu /login weitergeleitet. Wenn ich jedoch zu /yolo navigiere, wirft die Anwendung eine Nancy.ErrorHandling.RouteExecutionEarlyExitException, wo ich annahm, dass sie mich an /login?returnUrl=seeme umleiten sollte.

Ich bin durch the github forms auth source gegangen, die das Verhalten in this file kennzeichnet. Ich kann keine wesentlichen Unterschiede finden (meine Bootstrapper, meine IUserMapper, meine IUserIdentity).

Ist meine Verwendung hier falsch? Soll ich es versuchen und Antworten entsprechend vorbereiten? Ist es ein Fehler?

Ich führe NancyFX in einer selbst gehosteten Umgebung (Nancy.Hosting.Self), kein ASP und kein OWIN.

Antwort

3

Fehlalarm, Fehlalarm.

Es war mein Visual Studio Debugger, der gerade über die Ausnahme berichtet hat.

Natürlich drückte ich wie üblich "Pause" und die App ging unter. Wenn Sie stattdessen auf "Weiter" klicken, wurde ich auf die richtige Seite weitergeleitet.

+0

Sie können auch Visual Studio Exception Einstellungen öffnen und klicken Sie auf "Hinzufügen ...", wählen Sie "Common Language Runtime" und geben Sie "Nancy.ErrorHandling.RouteExecutionEarlyExitException" ein. Dann müssen Sie die beiden Kontrollkästchen deaktivieren. Visual Studio ignoriert diese Ausnahme von nun an. – Auresco82