2009-09-12 6 views
6

Có cách nào để có một hội đồng .NET có thể truy cập chỉ cho các nguồn được ủy quyền không?Hạn chế quyền truy cập vào lắp ráp .NET?

Ý tôi là tôi muốn có một DLL có chứa các thành phần, nhưng tôi không muốn bất cứ ai có thể sử dụng các thành phần này nhưng các EXE khác của DLL trong giải pháp của tôi. Mặc dù vậy, tôi muốn chúng nằm trong các tệp DLL riêng biệt.

Hạn chế về không gian tên cũng có thể là một ý tưởng hay nếu tính năng này tồn tại ở đó.

Có cách nào không?

+0

đang sử dụng Danh sách điều khiển truy cập OSes OK? Nhận người dùng và kiểm tra quyền truy cập vào một số tệp, thư mục, v.v. – kenny

+0

ANYTHING được hoan nghênh, vui lòng đăng câu trả lời ý tưởng của bạn để mọi người có thể bỏ phiếu. – Shimmy

Trả lời

6

Bạn có thể tạo các lớp nội bộ. Và cung cấp cho hội đồng quy định của bạn để truy cập các lớp này bằng cách sử dụng thuộc tính InternalsVisibleTo.

Việc lắp ráp phải được đặt tên mạnh. Bạn có thể tìm thêm thông tin về thuộc tính trong this article.

+0

Xem thêm http://www.bryancook.net/2008/05/tdd-tips-internalsvisibleto-keep-your.html – TrueWill

5

Vấn đề với lớp bên trong là nội bộ không có ý nghĩa trong IL và các lớp có thể được gọi thông qua phản ánh. Vì vậy, bằng cách sử dụng InternalsVisibleTo là một trợ giúp cho trình biên dịch hơn bất cứ điều gì khác.

Bạn có thể tiến thêm một bước bằng cách sử dụng StrongNameIdentityPermission để kiểm tra khóa công khai của cuộc gọi được đặt tên mạnh vào mã - nếu khóa công khai không khớp thì ngoại lệ bảo mật sẽ được ném. Điều này được thực thi ngay cả khi mã được gọi thông qua sự phản chiếu.