2012-04-27 31 views
35

Vì vậy, đây là kịch bản, tôi có một ứng dụng Asp.Net đang sử dụng nhà cung cấp thành viên xác thực tuỳ chỉnh & nhưng chúng tôi cần cho phép truy cập vô danh hoàn toàn (tức là) vào một thư mục cụ thể trong ứng dụng.Cho phép xác thực ẩn danh cho một thư mục duy nhất trong web.config?

Trong quản lý IIS, bạn có thể thiết lập chế độ xác thực của một thư mục, nhưng các thiết lập được lưu trong tập tin C:\Windows\System32\inetsrv\config\applicationHost.configas described here

Để thực hiện cài đặt dễ dàng hơn, nó sẽ là tuyệt vời nếu tôi có thể thiết lập này trong web.config của tôi nhưng sau một vài lần thử, tôi nghĩ điều này có thể không thực hiện được.

Có ai biết khác không?

Rất cám ơn

+0

Tại sao bạn muốn cho phép ẩn danh với thư mục đó? –

+0

Hầu hết ứng dụng chỉ có thể truy cập được với những người đã mua quyền truy cập nhưng chúng tôi muốn hiển thị một số nội dung miễn phí cho thế giới bên ngoài (để cám dỗ mọi người mua quyền truy cập). –

+0

câu hỏi và câu trả lời phổ biến nhất của nó rất đơn giản như được đưa ra –

Trả lời

35

Sử dụng <location> tag cấu hình, và <allow users="?"/> cho phép giấu tên chỉ hoặc <allow users="*"/> cho tất cả:

<configuration> 
    <location path="Path/To/Public/Folder"> 
     <system.web> 
     <authorization> 
      <allow users="?"/> 
     </authorization> 
     </system.web> 
    </location> 
</configuration> 
+10

Đây là những gì tôi đã thử lần đầu tiên nhưng nó không hoạt động. Tôi nghi ngờ rằng các cài đặt ủy quyền vị trí này chỉ có hiệu lực khi chạy với Xác thực biểu mẫu. –

+0

dường như là trường hợp của Chris Fewtrell. Chắc chắn, với Windows xác thực, nó không có vẻ quan trọng những gì bạn đặt chúng. – mattpm

2
<location path="ForAll/Demo.aspx"> 
<system.web> 
    <authorization> 
    <allow users="*" /> 
    </authorization> 
</system.web> 
</location> 

Trong Addition: Nếu bạn muốn viết một cái gì đó trên thư mục đó thông qua trang web , bạn phải cấp quyền cho IIS_User cho thư mục

41

Cách tiếp cận đầu tiên cần thực hiện là sửa đổi web.config sử dụng thẻ <location> cấu hình, và <allow users="?"/> cho phép ẩn danh hoặc <allow users="*"/> cho tất cả:

<configuration> 
    <location path="Path/To/Public/Folder"> 
     <system.web> 
     <authorization> 
      <allow users="?"/> 
     </authorization> 
     </system.web> 
    </location> 
</configuration> 

Nếu phương pháp đó không làm việc thì bạn có thể có những phương pháp sau đây mà đòi hỏi phải thực hiện một thay đổi nhỏ để IIS applicationHost .config.

Thứ nhất, thay đổi overrideModeDefault phần của anonymousAuthentication từ "Deny" "Cho phép" trong C: \ Windows \ System32 \ inetsrv \ config \ applicationHost.config:

<section name="anonymousAuthentication" overrideModeDefault="Allow" /> 

overrideMode là một tính năng bảo mật của IIS. Nếu ghi đè không được phép ở cấp hệ thống trong applicationHost.config thì không có gì bạn có thể làm trong web.config để kích hoạt nó. Nếu bạn không có cấp truy cập này trên hệ thống đích của bạn, bạn phải thực hiện cuộc thảo luận đó với nhà cung cấp dịch vụ lưu trữ hoặc quản trị viên hệ thống của bạn.

Thứ hai, sau khi cài đặt overrideModeDefault="Allow" sau đó bạn có thể đặt sau trong web.config của bạn:

<location path="Path/To/Public/Folder"> 
    <system.webServer> 
    <security> 
     <authentication> 
     <anonymousAuthentication enabled="true" /> 
     </authentication> 
    </security> 
    </system.webServer> 
</location> 
+0

-1 những gì về không lưu trữ localy? khi bạn không có quyền truy cập vào apphost.conf? – Dementic

+8

Bài đăng gốc cụ thể tham chiếu tệp applicationHost.config. Một cuộc bỏ phiếu xuống trên một câu trả lời có vẻ khắc nghiệt đối với bài đăng gốc không phù hợp với các giới hạn cụ thể của kịch bản của bạn. –

+0

"nó sẽ là tuyệt vời nếu tôi có thể thiết lập điều này trong web.config của tôi" – Dementic

0

Để làm cho nó làm việc tôi xây dựng thư mục của tôi như thế này:

Dự án Công Restrict

Vì vậy, tôi đã chỉnh sửa webconfig cho thư mục công khai của mình:

<location path="Project/Public"> 
    <system.web> 
     <authorization> 
     <allow users="*"/> 
     </authorization> 
    </system.web> 
    </location> 

Và đối với thư mục bị hạn chế của tôi:

<location path="Project/Restricted"> 
    <system.web> 
     <authorization> 
     <allow users="?"/> 
     </authorizatio> 
    </system.web> 
    </location> 

Tôi hy vọng tôi đã giúp.

0

Tôi đã thêm web.cấu hình vào thư mục cụ thể nói "Người dùng" (VS 2015, C#) và đoạn mã sau thêm

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
    <authorization>  
    <deny users="?"/> 
    </authorization> 
</system.web> 
</configuration> 

Ban đầu tôi sử dụng thẻ vị trí nhưng điều đó không làm việc.

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