Лучшие практики для хранения информации от входа в систему при нескольких вызовах WCF - PullRequest
1 голос
/ 01 сентября 2011

Я ищу рекомендации по хранению информации, полученной в процессе входа в систему для WCF, и доступности ее для любых последующих вызовов службы (принадлежащих одному сеансу).

В основном я написал свой собственный провайдер для входа в систему:

public class CustomAuthenticator : UserNamePasswordValidator
  {
    public override void Validate(string userName, string password)
    {
        if (username == "test" && password == "test")
        {
          int id_I_want_to_use = getUserID(username);
        }
    }
  }

И у меня есть служба, которая должна использовать идентификатор позже

public void someService(int itemID)
{
    getSomeInfo(id_I_want_to_use, itemID);
}

У меня проблема в том, что я не смог найти хорошую информацию о том, как правильно хранить это. Я посмотрел на instanceContext, но я надеялся сделать все это на стороне сервера. Я видел некоторую информацию об использовании устаревшей поддержки asp для использования HTTP-сессий для хранения данных, но на самом деле это не то, что я хотел. Я пытаюсь сохранить все, используя современные технологии, и я не хочу быть привязанным к http-привязке, если смогу помочь.

Возможно, я подошел к этому совершенно неправильно, но в основном поэтому и спрашиваю.

1 Ответ

1 голос
/ 02 сентября 2011

Способ сделать это - использовать контекст экземпляра, вы просто пометите свой контракт на сессию

 [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] 
 class MyService : IMyContract {...}

Это все на стороне сервера.Единственное, что вам нужно сделать на клиенте, это оставить прокси открытым, чтобы поддерживать сеанс.

Подробнее см. http://msdn.microsoft.com/en-us/magazine/cc163590.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...