Вчера я начал изучать WCF с портирования существующей веб-службы ASP.NET.
Создание службы WCF само по себе было очень простым.Примерно через час после того, как я создал свой первый проект библиотеки сервисов WCF, я уже успешно тестировал свой новый сервис WCF в тестовом клиенте WCF.
Теперь я хотел бы внедрить простую систему аутентификации, но все же не могусекрет производства.Для простоты, скажем, в моем веб-сервисе есть три операции: вход в систему, получение длины имени пользователя и выход из системы.Как мне выполнить TODO в следующем коде?
[ServiceContract]
public class MyService
{
[OperationContract(IsInitiating = true, IsTerminating = false)]
public bool Login(string userName, string password)
{
/* I have already implemented the function that validades
whether the user name and password are correct. */
if (ValidateLogin(userName, password))
{
/* TODO: Initiate a session */
return true;
}
else
return false;
}
[OperationContract(IsInitiating = false, IsTerminating = false)]
public int GetUserNameLength()
{
/*
TODO: How to validate whether the user has logged in?
How to obtain the name of the user that has logged in?
*/
int userNameLength = 42;
return userNameLength;
}
[OperationContract(IsInitiating = false, IsTerminating = true)]
public void Logout()
{
/* TODO: How to logout? */
}
}
ПРИМЕЧАНИЕ: Я враг номер один из грубых хаков.Пожалуйста, приведите меня к концептуально «чистым» решениям, независимо от их сложности.