2013-09-26 135 views
15

trên máy cục bộ, tôi đã tạo dự án mẫu trên mvc4 (dao cạo) và tạo thư mục có tên "x" và đặt một tệp văn bản "a.txt" vào đó.cách từ chối người dùng truy cập các thư mục con và tệp?

http://localhost:64471/x/a.txt 

trong cấu hình web của tôi từ chối tất cả các người dùng truy cập vào thư mục "x" bởi cấu hình này:

<location path="x"> 
<system.web> 
    <authorization> 
    <deny users="*"/> 
    </authorization> 
</system.web> 

Bây giờ nếu người dùng gửi yêu cầu này:

http://localhost:64471/x/ 

nó hoạt động và đưa người dùng trở lại URL được xác định trong thẻ biểu mẫu trong cấu hình web.

nhưng khi người dùng gửi yêu cầu này:

http://localhost:64471/x/a.txt 

có thể đọc file văn bản trong trình duyệt (browser cho thấy nội dung của file văn bản).

tôi muốn biết cách từ chối người dùng truy cập tất cả các tệp và thư mục con trong thư mục "x"?

+0

Về mặt lý thuyết, 'path =" x "' nên hạn chế mọi thứ trong thư mục x. Bạn sử dụng loại xác thực nào? * Ví dụ, Form authentication * Ngoài ra, bạn giữ thẻ 'location' đó ở đâu - web.config root của ứng dụng hoặc web.config bên trong thư mục x? – Win

+0

@Tôi sử dụng hình thức xác thực.i đặt vị trí trong thư mục gốc dưới thẻ motevalizadeh

+0

bỏ qua vị trí để bao gồm tất cả các tệp –

Trả lời

6

Tôi đã thử nghiệm với path="x" trong root.config gốc. Nó hạn chế mọi thứ trong thư mục x; nó thậm chí sẽ không cho phép tôi duyệt qua ~/x. Tôi được chuyển hướng đến trang đăng nhập.

Bạn có thể thử đường dẫn đầy đủ đến a.txt như thế này trong root.config gốc không?

<location path="x/a.txt"> 
    <system.web> 
    <authorization> 
     <deny users="*"/> 
    </authorization> 
    </system.web> 
</location> 

Nếu vẫn không hoạt động, bạn có thể thử tạo web.config bên trong thư mục x có nội dung sau.

<?xml version="1.0"?> 
<configuration> 

    <location path="a.txt"> 
    <system.web> 
     <authorization> 
     <deny users="*"/> 
     </authorization> 
    </system.web> 
    </location> 

</configuration> 
10

Tôi biết đây là một câu hỏi cũ, nhưng nếu bạn đang gặp vấn đề và xử lý các tập tin văn bản hoặc html, bạn có thể muốn tham khảo this câu hỏi stackoverflow.

Nói tóm lại, bạn có thể cần thêm video này vào web.config của bạn:

<system.webServer> 
    <modules> 
     <remove name="UrlAuthorization" /> 
     <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" /> 
    </modules> 
</system.webServer> 

Như kirk điểm ra, các file như txt và file .html được xử lý bởi IIS và không ASP.NET, vì vậy các quy tắc ủy quyền không được áp dụng cho chúng.