2014-05-08 7 views
6

Sto utilizzando Owin, Katana e Nancy per ospitare un sito semplice con una sezione di autenticazione richiesta. Nota Sono anche utilizzando NuGet pacchetto - Nancy.MSOwinSecurityReindirizza a ReturnUrl dopo l'autenticazione cookie riuscita in Owin, Katana & Nancy

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

Ecco il mio codice modulo

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"]; 
     }; 
    } 
} 

La mia forma Sottoporre

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

Ora sto cercando di reindirizzare dopo login riuscito a ReturnUrl -

ad es. Login? ReturnUrl =% 2Fblah% 2blahblah

Sembra che non vi sia alcun metodo di reindirizzamento come nell'autenticazione delle form, più la proprietà dei parametri della stringa di query è vuota.

risposta

4

Hai provato Response.AsRedirect("/"); o GetRedirect("/"); su NancyContext

Utilizzando il codice di esempio:

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

che posso fare Response.Redirect ma non riesco a ottenere l'URL di reindirizzamento. GetRedireect e p.RediretUrl non esistono. –

+0

Aggiornato - Ho usato il parametro accessor del route, non l'accessor della stringa di query. Come nota a margine 'Context.GetRedirect (p.Request.Query.RedirectUrl)' è il modo GetRedirect per avvicinarsi a questo. –

+1

Puoi aggiornare il codice di esempio con il codice corretto per favore. –

Problemi correlati