Средства разработки приложений


Поддержка сессий


Осуществляется с помощью объектов ServerSecurityContext, SecurityContextContainer, ClientSecurityContext на клиентской и серверной сторонах. Инициализация сессии происходит в методах AuthenticateRequest для Web-сервера и в ProcessMessage канального приемника для сервера приложения. Объекты ISecurityContext(ServerSecurityContext, ClientSecurityContext), содержащие состояние сессии, хранятся в коллекции SecurityContextContainer. Ключом к сессии является SID (идентификатор сессии). При инициализации сессия извлекается из коллекции(SecurityContextContainer) и с помощью статического метода Current ассоциируется с текущим потоком выполнения. public static ClientSecurityContext Current { get { ClientSecurityContext currentContext = (ClientSecurityContext)System. Runtime.Remoting.Messaging.CallContext. GetData("ClientSecurityContext"); if (currentContext != null) { currentContext.lastActivity = DateTime.Now; } return currentContext; } set { if (value != null) { value.lastActivity = DateTime.Now; } System.Runtime.Remoting.Messaging. CallContext.SetData("ClientSecurityContext", value); } }

После инициализации сессии ее состояние доступно в любом месте кода. [PrincipalPermissionAttribute(SecurityAction.Demand, Authenticated=true)] public string GetUserData() { Console.WriteLine("GetUserData " + Security.ServerSecurityContext.Current.Login); }

Главное - проставить для этого ссылки на SecurityBase и SecurityServer(SecurityClient).


Начало  Назад  Вперед



Книжный магазин