Я хотел бы создать какой-либо атрибут аутентификации и присоединить его к различным OperationContracts. Внутри этого атрибута он проверяет токен аутентификации и проверяет его работоспособность до запуска OperationContract.
Какой лучший способ реализовать это на платформе .net? Есть ли в wcf какие-либо специальные атрибуты, которые уже выполняют этот тип функций? Я изображаю нечто похожее на атрибуты, которые вы можете прикрепить к контроллерам MVC, которые будут выполнять операции перед выполнением действий.
В случае необходимости я использую WCF для создания веб-служб SOAP, которые будут использоваться клиентами на различных платформах, поддерживающих SOAP, а не только клиентами WCF
Вот код, поясняющий, что я пытаюсь сделать:
Интерфейс:
[ServiceContract]
public interface IService
{
[OperationContract]
string ValidateUser(string username, string password);
[OperationContract]
string GetDataAndAuthInCode(string authtoken);
[MyAuthorizationAttribute]
[OperationContract]
string GetDataAndAuthWithAttribute(string authtoken);
}
реализация:
public class Service : IService
{
public string ValidateUser(string username, string password)
{
if (!Membership.ValidateUser(username, password))
throw new Exception("invalid user...");
else
return GenerateAuthToken(username);
}
public string GetDataAndAuthInCode(string authtoken)
{
if (!IsAuthTokenValid(authtoken))
throw new Exception("Auth token invalid expired");
else
return GetData();
}
public string GetDataAndAuthWithAttribute(string authtoken)
{
return GetData();
}
}