2014-04-17 16 views
6

Tôi đã viết một httphandler để chặn tất cả các tệp pdf yêu cầu qua URL từ một thư mục cụ thể và chuyển hướng người dùng đến trang Đăng nhập. Nếu người dùng được xác thực, tệp có thể được tải xuống. web.config của tôi có các mục sau đây cho hành động ngăn chậnlàm thế nào để viết httphandler để chỉ chặn các tập tin trong một thư mục cụ thể

<httpHandlers> 
<add verb="*" path="/calderdale/*.pdf" 
    type="NES.HiLo.Security.CalderDaleAuthenticationHandler, NES.HiLo.Security" /> 
</httpHandlers> 

Trong IIS (6.0) Cài đặt tiện ích ứng dụng tôi đã thêm một thiết lập với thực thi C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll và mở rộng Pdf.

Tác phẩm này nhưng mọi yêu cầu tệp pdf đều bị chặn thay vì các tệp có trong thư mục calderdale.

Tôi đã thử các giải pháp được cung cấp trên liên kết này Mapping specific folder to HttpHandler in web.config và xóa cài đặt tiện ích ứng dụng nhưng sau đó trình xử lý không nhận cuộc gọi nào cả.

Bất kỳ ý tưởng nào?

+0

Bạn có thể sử dụng httpModule thay vì httpHandler. –

+0

Tôi không thể sử dụng httpmodules vì ​​chúng tôi chỉ có thể sử dụng httphandler để bảo mật tệp thông qua trình xử lý. ví dụ. www.domainname.com/foldername/somefile.doc sẽ mở tệp bất kể hiện diện httpmodule – rumi

+0

@Tìm hiểu liên kết bạn đưa ra để đặt một tệp web.config khác trong thư mục, thực tế là bạn có đường dẫn = "/ calderdale/* .pdf "gợi ý bạn chưa làm câu trả lời được chấp nhận để làm, tức là đặt web.config vào thư mục 'calderdale' và thay đổi đường dẫn thành path =" *. pdf " –

Trả lời

5

Thêm này để cấu hình web chính của bạn:

<location path="static"> 
    <system.web> 
    <httpHandlers> 
     <add verb="GET,HEAD" path="*.*" 
      type="NES.HiLo.Security.CalderDaleAuthenticationHandler, NES.HiLo.Security" /> 
    </httpHandlers> 
    </system.web>  
</location> 
6

tôi nghĩ thủ thuật ở đây là để chỉ đăng ký HttpHandler cho rằng thư mục cụ thể. Điều này có thể được thực hiện bằng cách di chuyển nội dung system.web/httpHandlers vào một nút vị trí trong web.config của bạn. Ví dụ:

<location path="calderdale"> 

(system.web/httpHandlers content) 

</location> 
1

Xin lỗi nhưng tôi là một chút nhầm lẫn :) lý do tại sao bạn cần phải làm điều này là không đơn giản sử dụng nhà cung cấp aspnet và bảo vệ thư mục này với đăng nhập theo yêu cầu Một webconfig đơn giản với logic để truy cập/từ chối và bạn giải quyết vấn đề của bạn. Khi một số cố gắng duyệt thư mục đó không thể tải xuống tệp và sẽ chuyển hướng đến trang đăng nhập. Hãy cho tôi biết nếu tôi hiểu nhầm điều gì đó.

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