Как я могу ограничить доступ к методам, разрешив только определенную сборку доступ к ним?
Есть ли атрибут, который я могу использовать для ограничения доступа к методам или сборкам?
(Я работаю в C#, .Net 3.5)
например
[RestrictionAttribute(//Specify an assembly or a key or something here)]
Public void MyMethod()
{
//Do something...
}
Я хочу добавить "слой доступа" кода поверх некоторых бизнес-сборок, где может иметь место некоторая аутентификация и т. Д., И хочу убедиться, что к бизнес-сборкам нельзя получить доступ напрямую, только через уровень доступа.
2 ответа
Решение
Вы можете использовать internal
ключевое слово вместо public
для вашего класса (ов), а затем использовать InternalsVisibleTo
приписывать.
Томас
Без использования атрибутов вы можете сделать что-то вроде:
using System.Reflection;
using System.Security;
protected const string AUTHORIZED_CALLER
= "YourTrustedAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7bb5a56c4391e80f";
public void MyMethod()
{
if (Assembly.GetCallingAssembly().FullName != AUTHORIZED_CALLER) {
throw new SecurityException("Unauthorized method call.");
}
// Now do something.
}