2011-08-23 15 views
8

Điều này khiến tôi khó hiểu. Tôi sẽ giả sử webmethod sẽ thực hiện theo các quy tắc ủy quyền tương tự được thiết lập trong web.config như trang nó đang bật. Nó sẽ thực hiện vòng đời trang bình thường đầu tiên? Trong trường hợp của tôi có thêm logic trong một basepage kiểm tra quyền tiếp tục. Liệu logic này có được thực thi trước khi webmetod được gọi để ngăn truy cập từ những người dùng không được phép truy cập trang đó không?Là một webmethod trong codebehind như an toàn như trang nó được trên?

+0

Logic bổ sung được triển khai như thế nào? Sự kiện nào nó thực thi? – Oded

+0

Khi bạn nói các quy tắc tương tự như trang được bật, nghĩa là bạn đã có ASMX và ASPX trong cùng một ứng dụng web, tức là dưới cùng một web.config? Nếu bạn đang gọi ra một ASMX trong một ứng dụng web khác, nó sẽ khác. – Rup

+0

Ứng dụng web giống nhau. Tôi chỉ cần đặt các webmethod trong codebehind kể từ khi các cuộc gọi ajax sẽ chỉ đến từ trang aspx. Tôi biết tôi có lẽ sẽ tốt hơn bằng cách sử dụng một trình xử lý nhưng tôi không có toàn quyền kiểm soát dự án này vì vậy tôi muốn chứa mã trong trang đó. – Mike

Trả lời

7

Webmethod phải tĩnh và không tuân theo vòng đời ASP.NET bình thường.

Trong một webmethod, bạn không thể truy cập phiên hoặc các điều khiển trên trang.

Vì nó sẽ không đi qua tất cả các sự kiện, tôi không nghĩ rằng PreInit của bạn sẽ được gọi để bạn sẽ không thể hạn chế quyền truy cập thông qua đó.

1

Dòng dưới cùng là phương pháp web kém an toàn hơn nhiều so với phương pháp web asmx truyền thống. Mặc dù bạn có thể có phương thức treo /default.aspx/MyWebMethod, nó sẽ không đảm nhận bất kỳ bảo mật biểu mẫu nào được xây dựng và có thể được gọi từ bất cứ đâu trong ứng dụng của bạn.

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