【转】UniGUI Session管理說明

【转】UniGUI Session管理說明

(2015-12-29 15:41:15)

转载▼

  分类: uniGUI

台中cmj朋友在uniGUI中文社区QQ群里发布的,转贴至此。

UniGUI Session管理說明
每一個Session對應一個UniMainModule,一個MainForm
因此Session+UniMainModule就可以得到所有Session+使用者的資料
以做管理之用

[UniServerModule]
 
  Public區定義
    UserList:TList; //登入Session List

//事件
  procedure TUniServerModule.UniGUIServerModuleCreate(Sender: TObject);
   begin
     UserList:=UniServerModule.SessionManager.Sessions.SessionList;
   end;
//---------------------------------------------------------------------------------
[UniMainModule]

Public //定義,由設計者自行決
    UserID:String;       //登入使用者ID
    LoginTime:TDateTime; //登入時間
    Msg:String;          //做Session間訊息傳遞

BrowserType:String;  //Session之瀏覽器類別
    BrowserVersion:integer; //Session之瀏覽器版本
    OSType:String;
    IsMobile:Boolean;    //Session是否Mobile

RType:Integer; //OnHandleRequest執行類別

//事件,此處可處理Session間的訊息
  //只要使用者在瀏覽器有動作,會觸發本事件
  //UniGUI的Session接受其他Session的訊息,無法主動顯示,
  procedure TUniMainModule.UniGUIMainModuleHandleRequest(ASession: TObject;var Handled: Boolean);
  var Session:TUniGUISession;
      MF:TMainForm;
   begin
     Session:=TUniGUISession(ASession);
     MF:=TMainForm( Session.UniMainModule.MainForm ); //Session對應的MainForm
     case Self.RType of
      1:begin
          MF.UniLabel1.Caption:=‘TEST訊息‘; //
          Session.ShowAlert(‘OK‘);
        end;
      2:begin
        end;
      3:begin
        end;
     end;
     Self.RType:=-1; //
   end;
//---------------------------------------------------------------------------------
[LoginForm]

//事件,設定Session沒定義的資料
 procedure TLoginForm.BtnLoginClick(Sender: TObject);
 var ok:Boolean;
     C:TUniClientInfoRec; //uniGUIApplication.pas
     m:TuniMainModule;
  begin
    m:=UniMainModule; //
    //--處理可否登錄 Ok=True可登入
    m.UserID:=Self.EdUser.Text; //UserID在Session沒有,是自行加入
    C:=UniApplication.ClientInfoRec;
    m.SessionID:=UniSession.SessionID;
    m.LoginTime:=Now;

m.BrowserType:=C.BrowserType;
    m.BrowserVersion:=C.BrowserVersion;
    m.OSType:=C.OSType;
    m.IsMobile:=UniSession.IsMobile;

Ok:=True; //自行決定如此處理Ok
    //記錄登入使用者處理
    if Ok then
     begin
       ModalResult:=mrOK;  // Login is valid so proceed to MainForm ,執行段 Login form會Destory
     end;
  end;

//---------------------------------------------------------------------------------
[MainForm]

//事件,列出Session一覽表
 procedure TMainForm.UniButton7Click(Sender: TObject);
 var i:integer;
     Session:TUniGUISession;
     m:TUniMainModule; //Session對應的UniMainModule
  begin
    Self.PageControl.ActivePageIndex:=0;
    Self.MLog.Clear;
    for i:=0 to UniServerModule.UserList.Count-1 do
     begin
       Session:= TUniGUISession( UniServerModule.UserList[i]);
       m:=TUniMainModule(Session.UniMainModule);
       Self.MLog.Lines.Add( Session.SessionId +‘,‘+
                            m.UserID +‘,‘+
                            FormatDateTime(‘yyyy.mm.dd-hh:nn:ss.zzz‘,LoginTime:TDateTime; )+‘,‘+
                            m.BrowserType+‘,‘+
                            inttostr(m.BrowserVersion)+‘,‘+
                            m.OSType+‘,‘+
                            inttostr(ord(m.IsMobile))
                        );
     end;
  end;

时间: 2024-10-21 01:39:23

【转】UniGUI Session管理說明的相关文章

NUC970 U-Boot 使用說明

U-Boot 使用說明U-Boot 是一個主要用於嵌入式系統的開機載入程式, 可以支援多種不同的計算機系統結構, 包括ARM.MIPS.x86與 68K. 這也是一套在GNU通用公共許可證之下發布的自由軟體. 他支援下列功能:? 網路下載: TFTP, BOOTP, DHCP? 串口下載: s-record, binary (via Kermit)? Flash 管理: 抹除, 讀, 寫? Flash 型別: SPI flash, NAND flash? 記憶體工具: 讀, 寫, 複製, 比對?

转:通过Spring Session实现新一代的Session管理

长期以来,session管理就是企业级Java中的一部分,以致于我们潜意识就认为它是已经解决的问题,在最近的记忆中,我们没有看到这个领域有很大的革新. 但是,现代的趋势是微服务以及可水平扩展的原生云应用(cloud native application),它们会挑战过去20多年来我们设计和构建session管理器时的前提假设,并且暴露了现代化session管理器的不足. 本文将会阐述最近发布的Spring Session API如何帮助我们克服眼下session管理方式中的一些不足,在企业级Ja

JSP Session管理

阅读目录 先说说cookie与session session常用的方法 session声明周期 管理session过期 通过tomcat监控管理session 在Eclipse重启Tomcat,tomcat-users.xml被重置 本篇讲述JSP中session的相关知识和管理方法: 回到顶部 先说说cookie与session 在web中常用的两种用户信息管理方式:cookie 和 session. cookie是保存在用户客户端的数据,用于避免每次发送http请求时,连带过多的数据,造成复

GlusterFS六大卷模式說明

GlusterFS六大卷說明 第一,分佈卷 在分布式卷文件被随机地分布在整个砖的体积.使用分布式卷,你需要扩展存储,冗余是重要或提供其他硬件/软件层.(簡介:分布式卷,文件通过hash算法随机的分布到由bricks组成的卷上.卷中资源仅在一台服务器上存储,在存储池中非镜像或条带模式.) (In a distributed volumes files are spread randomly across the bricks in the volume. Use distributed volum

基于DDD的现代ASP.NET开发框架--ABP系列之7、ABP Session管理

点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之7.ABP Session管理 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开源项目:https://github.com/aspnetboilerplate 简介 如果一个应用程序需要登录,则它必须知道当前用户执行了什么操作.因此ASP.NET

008-shiro与spring web项目整合【二】认证、授权、session管理

一.认证 1.添加凭证匹配器 添加凭证匹配器实现md5加密校验. 修改applicationContext-shiro.xml: <!-- realm --> <bean id="customRealm" class="com.lhx.ssm.shiro.CustomRealm"> <!-- 将凭证匹配器设置到realm中,realm按照凭证匹配器的要求进行散列 --> <property name="creden

都很正常這起碼說明

都很正常這起碼說明都很正常這起碼說明都很正常這起碼說明都很正常這起碼說明都很正常這起碼說 http://p.sfacg.com/p/6770815/http://p.sfacg.com/p/6770818/http://p.sfacg.com/p/6770821/http://p.sfacg.com/p/6770823/http://p.sfacg.com/p/6770825/http://p.sfacg.com/p/6766724/http://p.sfacg.com/p/6766727/ht

How Tomcat works — 八、tomcat中的session管理

在使用shiro的session的时候感觉对于tomcat中session的管理还不是特别清楚,而且session管理作为tomcat中比较重要的一部分还是很有必要学习的. 目录 概述 session的作用 session新建.查找和更新 session删除 总结 概述 在tomcatsession管理的类标准实现为StandardManager,主要作用为启动的是加载缓存的session,类关系如下: 在用户servlet中使用的session为StandardSessionFacade(也是

Session管理之ThreadLocal

在各种Session 管理方案中, ThreadLocal 模式得到了大量使用.ThreadLocal 是 Java中一种较为特殊的线程绑定机制.通过ThreadLocal存取的数据,总是与当前线程相关. 也就是说,JVM 为每一个执行的线程,绑定了私有的本地实例存取空间,从而为多线程环境常出 现的并发訪问问题提供了一种隔离机制. 首先,我们须要知道.SessionFactory负责创建Session,SessionFactory是线程 安全的,多个并发线程能够同一时候訪问一个SessionFa