2014-05-08 12 views
6

Tôi đang sử dụng Owin, Katana và Nancy để lưu trữ một trang web đơn giản với phần yêu cầu xác thực. Note Tôi cũng đang sử dụng NuGet gói - Nancy.MSOwinSecurityChuyển hướng đến ReturnUrl sau khi xác thực cookie thành công trong Owin, Katana & Nancy

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

Dưới đây là mã phân hệ của tôi

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

nộp mẫu đơn của tôi

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

Bây giờ tôi đang tìm kiếm để chuyển hướng sau đăng nhập thành công vào ReturnUrl -

ví dụ: Đăng nhập? ReturnUrl =% 2Fblah% 2blahblah

Có vẻ là không có phương pháp chuyển hướng như trong hình thức xác thực cộng với chuỗi truy vấn tham số thuộc tính còn trống.

Trả lời

4

Các bạn đã thử Response.AsRedirect("/"); hoặc GetRedirect("/"); trên NancyContext

Sử dụng mẫu mã của bạn:

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

tôi có thể làm Response.Redirect nhưng tôi không thể có được url chuyển hướng. GetRedireect và p.RediretUrl không tồn tại. –

+0

Đã cập nhật - Tôi đã sử dụng trình truy cập thông số tuyến đường, không phải là trình truy cập chuỗi truy vấn. Là một lưu ý phụ 'Context.GetRedirect (p.Request.Query.RedirectUrl)' là phương thức GetRedirect để tiếp cận điều này. –

+1

Bạn có thể cập nhật mẫu mã với mã đúng không. –

Các vấn đề liên quan