Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Немножко расширить SessionIDManager / 2 сообщений из 2, страница 1 из 1
28.06.2013, 15:43
    #38314197
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Немножко расширить SessionIDManager
Вот такое дело. Стандартная реализация SessionIDManager полностью устраивает.

Однако для обработки запросов по определенному адресу (отдельный контроллер) требуется выдергивать идентификатор сессии не из кукисов, а из параметров URL, который кроме того еще и зашифрован, типо вот такого:

http://domain.tld/Auth/Commit?token=Q4Uyi93dLfQJSOMNd9fvf-VwEjWU8Lke_waLgRUoAdI1

Проблема SessionIDManager состоит в том, что его виртуальные методы позволяют только изменить генератор SessionID, но не получение идентификатора из другого источника. Поэтому я унаследовал SessionIDManager, но подменил реализацию GetSessionID интерфейса ISessionIDManager (explicitly). Получилось некая псевдовиртуальность.

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


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
	public class AuthSessionIDManager : SessionIDManager, ISessionIDManager
	{
		string ISessionIDManager.GetSessionID(HttpContext context)
		{
			if (context.Request.Path.StartsWith("/Auth/", StringComparison.InvariantCultureIgnoreCase))
			{
				try
				{
					return ExtractSessionID(context);
				}
				catch (Exception ex)
				{
					Log.ErrorEception("Unable to extract SessionId: " + ex.Message, ex);
					return null;
				}
			}
			return GetSessionID(context);
		}
	
		private string ExtractSessionID(HttpContext context)
		{
			...
			// выдергиваем и расшифровываем из URL
			...
		}
	}
...
Рейтинг: 0 / 0
28.06.2013, 17:27
    #38314330
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Немножко расширить SessionIDManager
hVostt, мне кажется что в этом случае лучше написать собственный класс реализующий ISessionIDManager.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Немножко расширить SessionIDManager / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]