2014-05-07 31 views
6

Tôi đang làm việc với ứng dụng OWIN tự lưu trữ và đang cố gắng tìm ra cách yêu cầu xác thực/ủy quyền cho tất cả các yêu cầu (hoặc yêu cầu tùy ý).Yêu cầu xác thực cho tất cả các yêu cầu cho một ứng dụng OWIN

Một số thành phần riêng lẻ trong đường ống có cơ sở Cấp phép riêng (ví dụ: WebAPI, SignalR, Nancy) nhưng có vẻ hơi dư thừa khi tôi muốn hạn chế mọi thứ. Ngoài ra, một số phần mềm trung gian không có hỗ trợ ủy quyền (ví dụ: Microsoft.Owin.StaticFiles).

Nếu OWIN Startup của tôi trông giống như sau:

public class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     app.RequireSsl(); 

     app.UseCookieAuthentication(new CookieAuthenticationOptions()); 
     //... 
     app.UseGoogleAuthentication(); 

     // ** Need to add something that restricts access ** 

     app.UseDirectoryBrowser(); 
    } 
} 

Làm thế nào để yêu cầu người dùng đã được chứng thực (chuyển hướng nếu cần thiết) trước khi phục vụ các trình duyệt thư mục? (Trình duyệt thư mục có thể tùy ý là các thành phần OWIN khác.)

+0

bất kỳ mẫu đầy đủ nào trong github? không phải là yêu cầu công khai đối với OWIN? – Kiquenet

Trả lời

22

Đặt điều này giữa phần mềm trung gian auth của bạn và các thành phần bạn muốn bảo vệ. Nó sẽ kiểm tra để đảm bảo rằng mỗi yêu cầu được xác thực.

 app.Use(async (context, next) => 
     { 
      var user = context.Authentication.User; 
      if (user == null || user.Identity == null || !user.Identity.IsAuthenticated) 
      { 
       context.Authentication.Challenge(); 
       return; 
      } 
      await next(); 
     }); 
Các vấn đề liên quan