2010-11-09 30 views
24

Tôi chắc chắn điều này có liên quan đến IIS nhưng tôi không thể hiểu được.Tại sao biểu định kiểu của tôi chuyển hướng tôi để đăng nhập?

Tôi có một trang web sử dụng xác thực biểu mẫu. Khi trang web của tôi cố truy cập bất kỳ tài nguyên tệp nào (tệp javascript, css, v.v.), tôi được chuyển hướng đến trang đăng nhập biểu mẫu được đặt trong web.config của tôi. Tôi cũng được chuyển hướng nếu tôi chỉ nhập địa chỉ vào thanh địa chỉ.

Mục web.config cho các hình thức auth là khá cơ bản:

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

Ngoài ra còn có hai nút vị trí để từ chối người sử dụng từ các bộ phận khác của trang web:

<location path="n2"> 
    <system.web> 
    <authorization> 
     <allow roles="Editors" /> 
    </authorization> 
    </system.web> 
</location> 
<location path="web.config"> 
    <system.web> 
    <authorization> 
     <deny users="*" /> 
    </authorization> 
    </system.web> 
</location> 

Tôi đang sử dụng cài đặt IIS7 chuẩn trên Windows Server 2008 R2.

Sửa Vì vậy, nếu tôi thêm một cookie auth ngẫu nhiên (FormsAuthentication.SetAuthCookie()), các nguồn lực trở nên có sẵn, tôi biết nó có phải là mô hình xác thực của tôi đó là điều sai lầm bằng cách nào đó. Nó hoạt động trên một máy chủ khác (tôi chỉ cần sao chép nó hơn). Bất kỳ ý tưởng làm thế nào tôi có thể theo dõi vấn đề xuống?

+0

Bạn đã bao giờ giải quyết vấn đề này chưa? Có chính xác cùng một vấn đề. – starskythehutch

Trả lời

51

tôi đã có lỗi tương tự, trong trường hợp của tôi lừa được thiết Anonymous xác thực để sử dụng danh tính App bơi thay vì IUSR trong IIS

  1. Mở IIS
  2. Mở rộng Sites
  3. Chọn [yourwebsite]
  4. Xác thực nhấp đúp (sẽ nằm trong "Khu vực" IIS hoặc Bảo mật "Danh mục")
  5. Chọn Xác thực ẩn danh
  6. Chọn Edit trong panel Actions
  7. Nhấp vào nút radio 'Application sắc hồ bơi'
+4

Và đối với những người tìm kiếm nơi để thực hiện việc này: Trình quản lý thông tin Internet (IIS) -> Trang web -> Trang web mặc định -> [YourWebSite] -> Xác thực -> Xác thực ẩn danh -> Chỉnh sửa -> Danh tính người dùng ẩn danh: Hồ sơ ứng dụng – Nailuj

+1

Trên máy chủ 2012 iis 8.5> Trang web> [Trang chủ của bạn]> (trong nhóm IIS) Xác thực> Xác thực ẩn danh - Chỉnh sửa> nhận dạng hồ bơi ứng dụng (https://www.dropbox.com/s/8ytk3zwkyqsmm0c/iis8_anon_creds.png?dl= 0) – jaybro

0

Đã xảy ra thời gian kể từ khi tôi thực hiện bất kỳ biểu mẫu asp.net nào nhưng câu hỏi đầu tiên sẽ là - bạn có chắc chắn người dùng của mình là thành viên của vai trò "Người biên tập" hay không. Bạn có thể sử dụng công cụ quản trị trang web để thiết lập điều này tôi nghĩ? http://msdn.microsoft.com/en-us/library/ssa0wsyf.aspx

+0

Tôi thậm chí không cố gắng duyệt qua đường dẫn yêu cầu vai trò biên tập viên, nhưng tôi tích cực là tôi đang ở trong đó. – scottm

0

Đó là vì bạn đã đặt từ chối cho mọi người. Trong IIS 7, vì đường ống tích hợp, bạn sẽ được chuyển hướng ngay cả khi bạn cố gắng duyệt CSS hoặc bất kỳ trang tĩnh nào.

Đặt nội dung tĩnh bên trong một thư mục nếu bạn muốn và cho phép truy cập vào nó.

+0

Tôi không chỉ nói rằng mọi người đều bị từ chối truy cập vào tệp web.config? Ngay cả khi tôi xóa hai nút vị trí cuối cùng, điều tương tự cũng xảy ra. – scottm

+0

Ohh ... xin lỗi vì đã thiếu phần web.config đó. Bạn có thể thử thêm phần bổ sung cho người dùng nặc danh không?

+0

Bạn cũng có thể thử với một ứng dụng mới đơn giản và xem liệu bạn có thể duyệt các tệp tĩnh hay không. NẾU, tình cờ, ngay cả điều đó cũng không hiệu quả ... Tôi khuyên bạn nên kiểm tra xem máy của bạn có chứa ký tự gạch dưới trong tên của nó không. –

1

Tôi sử dụng allow * cho thư mục Content của mình. Điều đó sẽ ngăn chặn bất kỳ sự cho phép nào xảy ra đối với nội dung tĩnh.

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

Rick

+0

Tôi cũng đã thử điều này, nhưng nhận được kết quả tương tự. Tôi bối rối. – scottm

+0

Nén dự án của bạn và gửi cho tôi nếu bạn muốn. rrb tại matrix6 dot com. Hoặc, thậm chí tốt hơn, làm cho một dự án thử nghiệm nhỏ hơn chỉ với các yếu tố cần thiết để có được vấn đề xảy ra. – rboarman

0

Không sử dụng <location> thẻ trong web.config để xử lý uỷ quyền trong một ứng dụng ASP.NET MVC như địa điểm có không còn bất kỳ ý nghĩa. Tất cả những gì bạn cần trong web.config là thẻ authentication. Trong ủy quyền MVC có thể đạt được bằng cách trang trí bộ điều khiển và/hoặc hành động thích hợp với thuộc tính [Authorize].

+0

Tôi có một ứng dụng webforms trong một thư mục bên trong dự án mvc của tôi. Rõ ràng, các vị trí có ý nghĩa, bởi vì không có mục nhập cho N2, người dùng không được chuyển hướng để đăng nhập. – scottm

+1

Tôi không đồng ý, thẻ vị trí có sử dụng trong các ứng dụng MVC. Tôi đã phải sử dụng chúng để cho phép truy cập nặc danh vào hai thư mục tài nguyên tĩnh. – Kev

+0

Tôi không đồng ý. Tôi sử dụng chúng cho thư mục nội dung của tôi và cho các trang đăng nhập/đăng ký của tôi. – rboarman

0

Tôi đã hoàn toàn giống nhau và nhận thấy đó là vì tôi đã quên cho phép truy cập vô danh vào trang web từ bên trong IIS! Điều này có nghĩa là FormsAuthentication luôn khởi động ngay cả đối với các tài nguyên tĩnh không được bảo vệ.

0

Trong IIS, Anonymous xác thực của tôi là trên một cách chính xác và người sử dụng đã được thiết lập để IUSR. Vì vậy, tôi cần phải đi vào Windows Explorer, điều hướng đến thư mục ứng dụng web của tôi, nhấp chuột phải vào Thuộc tính, tab Bảo mật, nút Chỉnh sửa và cung cấp IUSR Đọc, Danh sách và Đọc & Quyền thi hành (tập mặc định). Đảm bảo các thay đổi sẽ được thừa kế bởi tất cả trẻ em, áp dụng, có thể chờ đợi và bạn tốt để đi.

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