2009-08-30 36 views
19

Đối với hầu hết các phần, webapp của tôi yêu cầu xác thực để làm bất cứ điều gì. Có một vài trang, cụ thể là trang chủ, mà tôi muốn mọi người có thể truy cập mà không cần xác thực.Làm cách nào để cấp quyền truy cập ẩn danh cho url bằng cách sử dụng FormsAuthentication?

Cụ thể, tôi muốn cho phép truy cập nặc danh đến các url:

/home 
/default.aspx 

Tôi đang sử dụng MVC asp.net và FormsAuthentication. Cả hai url đều trỏ đến cùng một chế độ xem:

/home/index.aspx 

Đây là cấu hình hiện tại của tôi trong web.config.

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="2880" />  
</authentication> 
<authorization>   
    <deny users="?" />  
</authorization> 

Đọc tài liệu cho thẻ ủy quyền, nó cho biết "Định cấu hình ủy quyền cho ứng dụng web, kiểm soát quyền truy cập của khách hàng vào tài nguyên URL". Có vẻ như tôi có thể sử dụng thẻ ủy quyền để chỉ định url và cho phép truy cập.

Cái gì như:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="2880" />  
</authentication> 

<authorization>   
    <deny users="?" />  
</authorization> 

<authorization url="/default.aspx">   
    <allow users="?" />  
</authorization> 

<authorization url="/home">   
    <allow users="?" />  
</authorization> 

Trả lời

39

Tôi ghét phải trả lời câu hỏi của riêng tôi, nhưng kể từ khi tôi đã kết thúc tìm nó ra, tôi hình dung tôi muốn chia sẻ kiến ​​thức.

Sử dụng thẻ vị trí và đặt thẻ cho phép và từ chối theo đúng thứ tự.

Thẻ vị trí có thể được sử dụng để định cấu hình tài nguyên url cụ thể. Trong trường hợp của tôi, tôi muốn cấu hình một vài url và thư mục cụ thể.

Điều này không hoạt động lúc đầu bởi vì tôi không có sự cho phép/từ chối theo đúng thứ tự. Theo MSDN, "mô-đun ủy quyền cấp hoặc từ chối quyền truy cập vào tài nguyên URL tùy thuộc vào quy tắc truy cập đầu tiên được tìm thấy là quy tắc cho phép hay từ chối".

Trong trường hợp của tôi, tôi cần phải đặt tất cả nội dung công khai của mình trước (default.aspx, home, styles, images, scripts) và sau đó tôi phủ nhận mọi thứ khác. Tôi đã rời đường dẫn trên thẻ vị trí cuối cùng. Điều đó làm cho nó áp dụng cho tất cả các tệp và thư mục con.

Kết quả cuối cùng, người dùng có thể nhận được tới trang chủ, kéo lên hình ảnh và phong cách, nhưng đối với tất cả mọi thứ khác cần phải đăng nhập

Dưới đây là web cấu hình tập tin của tôi bây giờ.

<!--AUTHORIZATION AND AUTHENTICATION RULES--> 
    <location path="default.aspx"> 
    <system.web> 

     <authorization> 
     <allow users="?"/> 
     </authorization> 
    </system.web> 

    </location> 

    <location path="Home"> 
    <system.web> 

     <authorization> 
     <allow users="?"/> 
     </authorization> 
    </system.web> 

    </location> 

    <location path="Styles"> 
    <system.web> 

     <authorization> 
     <allow users="?"/> 
     </authorization> 
    </system.web> 

    </location> 

    <location path="Scripts"> 
    <system.web> 

     <authorization> 
     <allow users="?"/> 
     </authorization> 
    </system.web> 

    </location> 

    <location path="images"> 
    <system.web> 

     <authorization> 
     <allow users="?"/> 
     </authorization> 
    </system.web> 

    </location> 

    <location allowOverride="true"> 
    <system.web> 
     <authentication mode="Forms"> 
     <forms loginUrl="~/Account/LogOn" timeout="2880" slidingExpiration="true" /> 
     </authentication> 
     <authorization> 
     <deny users="?" /> 
     </authorization> 
    </system.web> 
    </location> 

    <!--END AUTHORIZATION AND AUTHENTICATION RULES--> 
+13

Tại sao sự khiêm tốn và CW? Nếu bạn kết thúc trả lời câu hỏi của riêng mình và đăng giải pháp, bạn không chỉ giúp đỡ bản thân mà còn giúp đỡ người khác. Hãy tự hào và lấy séc. Cảm ơn vì đã tham gia. –

+0

Tôi thực sự đấu tranh với điều này trong khoảng 3 giờ ngày hôm qua sau khi googling nhiều câu trả lời hợp lý. Đó là thứ dường như tạo nên sự khác biệt và cảm ơn rất nhiều vì đã làm nổi bật điều đó. Cảm ơn vì đăng. – nealkernohan

+0

Trong MVC 4 bạn chỉ cần cho phép người dùng điều khiển bạn muốn. Không cần thêm quyền truy cập đặc biệt vào kiểu/tập lệnh/v.v. các thư mục như vậy đã được thực hiện. Đồng thời di chuyển nội dung của ghi đè bạn đã đặt vào nút system.web chính. –

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