Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Redirect to ReturnUrl after successful cookie authentication in Owin, Katana & Nancy

I am using Owin, Katana and Nancy to host a simple site with an authentication required section. Note I am also using nuget package - Nancy.MSOwinSecurity

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

Here is my module 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"];
        };
    }
}

My submitting form

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

Now I am looking to redirect after successful login to the ReturnUrl -

e.g. Login?ReturnUrl=%2Fblah%2blahblah

There seems to be no redirect method like in forms authentication plus the query string parameters property is empty.

like image 993
Ned Ryerson Avatar asked May 08 '14 11:05

Ned Ryerson


1 Answers

Have you tried Response.AsRedirect("/"); or GetRedirect("/"); on NancyContext

Using your code sample:

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);
        };
     }
}
like image 92
Steve Godbold Avatar answered Sep 24 '22 14:09

Steve Godbold