2008-12-04 32 views
5

Đây là một cái nhìn tổng quan đơn giản bố trí thư mục của tôi đối với quan điểm của tôi:Cho phép truy cập vào các trang web cụ thể với ASP-MVC và Forms Authentication

Dự án

  • Trang 1
  • Trang 2
  • RSS

Số phát hành

  • Trang 1
  • Trang 2
  • RSS

Tôi đang sử dụng hình thức xác thực để từ chối quyền truy cập vào tất cả người dùng không được thẩm định, mà hoạt động tốt. Tuy nhiên, tôi muốn có thể cấp quyền truy cập vào chế độ xem RSS cho mọi người (để họ có thể đăng ký qua trình đọc google và nội dung)

Tôi hiểu rằng bạn có thể cấp quyền truy cập vào các trang bằng cách thêm trang sau vào web.config của bạn

<location path="TOURPAGE.aspx"> 
<system.web> 
    <authorization> 
    <allow users="*" /> 
    <allow users="?" /> 
    </authorization> 
</system.web> 

Tuy nhiên, làm thế nào tôi sẽ làm điều này với tôi URL động làm, chẳng hạn như:

Issues/RSS/chrisj 
  • con đường mà Maps để một bộ điều khiển trong các vấn đề được gọi là RSS, trong đó có một tên người dùng và spits ra một RSS của các vấn đề của họ ...

EDIT

Một số câu trả lời tôi nghĩ đã cố định nó, nhưng :

Dường như, trong trường hợp của tôi ít nhất, bạn vẫn cần cookie xác thực để xem trang. Bạn có thể đăng xuất và xem nó, miễn là bạn có cookie.

Điều đó không tốt với tôi, tôi cần trang hoàn toàn công khai vì đây là nguồn cấp dữ liệu RSS.

Trả lời

3

Hãy quên đi vị trí <> < cho phép /> < từ chối /> nội dung ... có vẻ như bạn cần sử dụng thuộc tính [Ủy quyền] trên hành động của mình.

Kiểm tra các trang này để biết thêm: http://www.asp.net/learn/mvc/tutorial-17-cs.aspx http://www.pnpguidance.net/post/ASPNETMVCFrameworkPreview4HandleErrorAuthorizeOutputCacheActionFilterAttributes.aspx

Ngoài ra, các thuộc tính có thể được áp dụng ở cấp điều khiển là tốt, vì vậy bạn không cần phải đặt nó trên mỗi hành động cá nhân.

3

Điều này thực sự đơn giản hơn nhiều so với tôi nghĩ. Có vẻ .net là khá thông minh, tôi thử như sau:

<location path="Issues/RSS"> 
<system.web> 
    <authorization> 
    <allow users="*" /> 
    <allow users="?" /> 
    </authorization> 
</system.web> 

Và nó làm việc :)

+0

grr, bạn đánh bại tôi với nó :) –

1
<location path="/Issues/RSS/"> 
<system.web> 
<authorization> 
<allow users="*" /> 
</authorization> 
</system.web> 
</location> 

EDIT: Lý do làm việc này bằng cách này, là bởi vì .NET là giả sử URL đó chuyển đến thư mục và thẻ vị trí này ở trên cho biết "mọi thứ trong thư mục 'Sự cố/RSS' đều an toàn :)

+0

Vẫn có câu trả lời chính xác: p – qui

+0

Điều này không phù hợp với tôi vì nó không thể kết thúc hoặc bắt đầu bằng "/". "~/Issues" hoạt động, nhưng không phải là "/ Issues" hoặc "~/Issues /". –

0

Điều này có thể không hoạt động như dự định.

Dường như, trong trường hợp của tôi ít nhất, bạn vẫn cần cookie xác thực để xem trang.Bạn có thể đăng xuất và xem nó, miễn là bạn có cookie.

Điều đó không tốt với tôi, tôi cần trang hoàn toàn công khai vì đây là nguồn cấp dữ liệu RSS.

0

Tôi đồng ý với Charlino rằng thẻ [Ủy quyền] có thể sẽ giải quyết được sự cố của bạn.

Nếu bạn đang sử dụng một thao tác điều khiển đơn cho cả RSS và trang (và chỉ hiển thị ActionResult khác dựa trên một số tham số), bạn có thể kiểm tra xem người dùng có được xác thực bằng HttpContext.Current.User.Identity.IsAuthenticated hay không để quyết định có tiếp tục truy cập & hay không.

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