zoukankan      html  css  js  c++  java
  • 【转】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;
  • 相关阅读:
    7月25 SVN 提交报错 | mybatis like | 数据库字段设计 | 打包打小包
    7月24 springboot 打包打小包 | mybatis 逆向工程 | 接口返回数据 | 启动打包注意事项 | springboot redis 引入
    7月20号 添加字段报错 | 密码加密与传输
    7月19 登录失败 错误次数 | 字段类型被修改bug | 日志
    7月14 Enity对象的抽取
    7月13 mybatis调用存储过程
    7月12 导入项目到svn | logback配置日志输出
    7月11 配置数据库自己挖坑 | 代码覆盖率测试 | MockMvc 测试用例
    书架
    试题库问题
  • 原文地址:https://www.cnblogs.com/westsoft/p/10329206.html
Copyright © 2011-2022 走看看