2014-05-08 12 views
6

Ich benutze Owin, Katana und Nancy, um eine einfache Website mit einer Authentifizierung erforderlichen Abschnitt hosten. Hinweis Ich verwende auch nuget Paket - Nancy.MSOwinSecurityRedirect nach ReturnUrl nach erfolgreicher Cookie-Authentifizierung in Owin, Katana & Nancy

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    AuthenticationType = Constants.AuthenticationType, 
    LoginPath = new PathString("/Login"), 
}); 
app.UseNancy(); 

Hier ist mein Modul Code

public class LoginModule : NancyModule 
{ 
    public LoginModule() 
    { 
     Post["login"] = p => 
     { 
      var name = Request.Form.name; 
      var auth = Context.GetAuthenticationManager(); 
      var claims = new List<Claim> {new Claim(ClaimTypes.Name, name)}; 
      var id = new ClaimsIdentity(claims, Constants.AuthenticationType); 
      auth.SignIn(id); 
      // redirect how???? 
      return View["index"]; 
     }; 
    } 
} 

Meine einreichenden Form

<form name="login" action="/login" method="post" accept-charset="utf-8"> 
    <ul> 
     ... 
    </ul> 
</form> 

Jetzt habe ich nach umleiten Suche Erfolgreiche Anmeldung am ReturnUrl -

z.B. Login? ReturnUrl =% 2Fblah% 2blahblah

Es scheint keine Redirect-Methode wie in Formularauthentifizierung plus die Query-String-Parameter-Eigenschaft ist leer.

Antwort

4

Haben Sie Response.AsRedirect("/"); oder GetRedirect("/"); anprobiert NancyContext

Ihr Codebeispiel verwenden:

public class LoginModule : NancyModule 
{ 
    public LoginModule() 
    { 
     Post["login"] = p => 
     { 
      var name = Request.Form.name; 
      var auth = Context.GetAuthenticationManager(); 
      var claims = new List<Claim> {new Claim(ClaimTypes.Name, name)}; 
      var id = new ClaimsIdentity(claims, Constants.AuthenticationType); 

      auth.SignIn(id); 

      return Response.AsRedirect(p.Request.Query.RedirectUrl); 
     }; 
    } 
} 
+0

Ich kann Response.Redirect tun, aber ich kann die Umleitungs-URL nicht bekommen. GetRedireect und p.RediretUrl sind nicht vorhanden. –

+0

Aktualisiert - Ich habe den Parameter route accessor verwendet, nicht den Query-String accessor. Als eine Randnotiz "Context.GetRedirect (p.Request.Query.RedirectUrl)" ist die GetRedirect-Methode, um dies zu erreichen. –

+1

Können Sie das Codebeispiel bitte mit dem richtigen Code aktualisieren? –