2011-07-04 36 views
5

Một số trang trên trang web của tôi cần sử dụng SSL, vì vậy tôi đã thêm [RequireHttps] vào bộ điều khiển có liên quan. Tuy nhiên, tôi vẫn muốn phần lớn các trang của mình luôn sử dụng không phải SSL nên tôi đã sử dụng thành công code I found on SO để tạo bộ lọc [DoNotUseHttps] tùy chỉnh.Ghi đè bộ lọc hành động toàn cầu

Để làm cho mọi thứ dễ dàng hơn, tôi muốn bao gồm bộ lọc không phải SSL này theo mặc định, vì vậy tôi đã thêm bộ lọc này vào bộ lọc chung được đặt trong tệp Global.asax. Tuy nhiên, tôi dường như bây giờ đã tạo ra một vòng lặp vô hạn với mỗi bộ lọc chuyển hướng đến nhau.

Điều gì dẫn tôi đến câu hỏi của mình ... có bất kỳ điều gì tôi có thể thêm vào bộ lọc toàn cầu của mình để phát hiện xem [RequireHttps] đã được áp dụng cho bộ điều khiển chưa?

Trả lời

5

Chắc chắn, bạn có thể thẩm vấn bất cứ điều gì bạn thích về các hành động và bộ điều khiển. Để kiểm tra RequireHttpsAttribute:

public override void OnActionExecuted(ActionExecutedContext filterContext) 
{ 
    base.OnActionExecuted(filterContext); 

    bool requireHttps = filterContext.ActionDescriptor.ControllerDescriptor 
     .GetCustomAttributes(typeof(RequireHttpsAttribute), true).Length > 0 
} 
Các vấn đề liên quan