2011-11-16 5 views
19

Tôi bắt đầu mã hóa một LoginModule cho Nancy, nhưng nó đã xảy ra với tôi rằng có thể tôi cần phải thực hiện xác thực theo một cách khác. Có cách nào được chấp nhận làm auth ở Nancy không? Tôi đang lên kế hoạch cho hai dự án ngay bây giờ: web và dịch vụ json. Tôi sẽ cần auth cho cả hai.Tôi nên xử lý xác thực với Nancy bằng cách nào?

+1

Không thực sự chắc chắn những gì bạn đang hỏi - bạn viết gì và "cách khác" là gì? Xác thực biểu mẫu và xác thực cơ bản được hỗ trợ ngoài hộp. –

+0

Vâng, đối với trang web ở Nancy, các biểu mẫu hoạt động rất tốt. Đối với dịch vụ json của tôi, tôi đã viết phần xác thực của riêng mình để kiểm tra khóa api theo từng yêu cầu. –

Trả lời

23

Khi Steven viết Nancy hỗ trợ xác thực cơ bản và biểu mẫu ra khỏi hộp. Có một cái nhìn hai ứng dụng demo để xem làm thế nào để làm mỗi: https://github.com/NancyFx/Nancy/tree/master/samples/Nancy.Demo.Authentication.Formshttps://github.com/NancyFx/Nancy/tree/master/samples/Nancy.Demo.Authentication.Basic

Từ thứ hai của những bản demo đây là một mô-đun mà đòi hỏi auth:

namespace Nancy.Demo.Authentication.Forms 
{ 
    using Nancy; 
    using Nancy.Demo.Authentication.Forms.Models; 
    using Nancy.Security; 

    public class SecureModule : NancyModule 
    { 
    public SecureModule() : base("/secure") 
    { 
     this.RequiresAuthentication(); 

     Get["/"] = x => { 
      var model = new UserModel(Context.CurrentUser.UserName); 
      return View["secure.cshtml", model]; 
     }; 
    } 
    } 
} 

và một đoạn bootstrapper rằng thiết lập hình thức auth trong đường dẫn yêu cầu:

protected override void RequestStartup(TinyIoCContainer requestContainer, IPipelines pipelines, NancyContext context) 
    { 
     // At request startup we modify the request pipelines to 
     // include forms authentication - passing in our now request 
     // scoped user name mapper. 
     // 
     // The pipelines passed in here are specific to this request, 
     // so we can add/remove/update items in them as we please. 
     var formsAuthConfiguration = 
      new FormsAuthenticationConfiguration() 
      { 
       RedirectUrl = "~/login", 
       UserMapper = requestContainer.Resolve<IUserMapper>(), 
      }; 

     FormsAuthentication.Enable(pipelines, formsAuthConfiguration); 
    } 
+8

Câu trả lời này là tại chỗ cho một trang web được cung cấp bởi Nancy. Đối với một dịch vụ, vẫn còn một cái gì đó mất tích từ Nancy. Tôi đã gửi yêu cầu kéo (https://github.com/NancyFx/Nancy/pull/650#issuecomment-6416528) chứa một phần StatelessAuthentication mới. Kiểu xác thực đó làm tròn ra Nancy (ít nhất là đối với tôi) là một công nghệ cung cấp dịch vụ web hoặc dịch vụ thực sự tuyệt vời. –

+0

@ByronSommardahl Tôi thấy yêu cầu kéo của bạn là một phần của Nancy ngay bây giờ. Tốt đẹp! –

1

Tôi đã tạo một ứng dụng web auth mẫu biểu mẫu với quản lý người dùng với Nancy để tôi tự học. Đó là trên Github ở đây nếu bạn muốn chơi với nó.

https://github.com/GusBeare/Nancy-UserManager