ASP.net: можно ли инициализировать сеанс вручную с идентификатором сеанса - PullRequest
0 голосов
/ 05 июля 2011

Я строю веб-сервис (ASMX) на C #.Я думаю об использовании идентификатора сеанса ASP.net в качестве токена для аутентификации.

У меня есть идентификатор сеанса, созданный с помощью CreateSessionID.Он будет отправлен клиенту после успешной аутентификации (как возвращаемое значение вызова веб-службы 'login').

Для последующих запросов клиент отправит идентификатор сеанса в качестве параметра для вызова веб-службы,Возможно ли воссоздать сеанс из этой строки идентификатора сеанса?

Заранее спасибо.

1 Ответ

6 голосов
/ 05 июля 2011

Проблема этого подхода в том, что CreateSessionID на самом деле не создает сеанс. Как следует из названия, он создает только уникальный идентификатор сеанса. Если вы посмотрите документацию MSDN , там написано

Этот метод не предназначен для вызывается из кода приложения.

Если вы прочитаете немного больше, вы увидите, что этот метод должен быть переопределен пользовательскими менеджерами идентификаторов сеансов, которые затем можно интегрировать в систему управления сеансами, отредактировав свой файл web.config.

Другими словами, ваше текущее использование CreateSessionID не делает то, что вы хотите.

Если вы действительно хотите использовать состояние сеанса в своем веб-сервисе, вам следует взглянуть на эту статью .

Вкратце, вам нужно добавить параметр EnableSession=true к вашим атрибутам [WebMethod], а затем вы можете автоматически получить доступ к сеансу через Context.Session. Обратите внимание, что для этого не требуется передавать идентификатор сеанса через службу, поскольку IIS будет обрабатывать все для вас.

Вы можете использовать метод CreateSessionID() (хотя лучше использовать что-то другое) для создания токена, который пользователи должны будут передавать с каждым запросом, но он будет использоваться только для проверки пользователь; ни один сеанс не может быть восстановлен на основе этого. Если вы идете по этому пути, убедитесь, что ваш сервис доступен через HTTPS. В противном случае любой перехватчик увидит токен прямо в текстовом виде (хотя это может быть уменьшено, если вы также проверите IP-адрес / строку user-agent / и т.д.)

Надеюсь, это поможет.

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