zoukankan      html  css  js  c++  java
  • uniGUI免登录的实现

    一般情况下,uniGUI项目总要有个登录窗口,客户端登录时,显示这个窗口。现在我想把这个应用嵌套到app中,由于app已经被用户登录,在这种情况下,如果再弹出登录窗口,要用户输入信息,是不合理的。那我该怎么办呢?

    在朋友们的帮助下,实现了用户免登录,实现思路,就是在访问uniGUI的url中加入登录信息,然后在uniGUI应用中取得登录信息,完成登录动作。具体实现方法:

    1.在访问uniGUI的url中加入用户免与密码参数:

    http://192.168.8.8:8077/m?userid=2222&pw=3333

    2.然后,接管uniMainDataModule.OnBeforeLogin事件:

    var
       userid, pw: string;
    begin
      //如果url中传来userid则自动登录,适应在app中调用,不弹出登录窗口.
      if uniGUIApplication.UniApplication.Parameters.IndexOfName('userid') <> -1 then
      begin
        userid := uniGUIApplication.UniApplication.Parameters.Values['userid'];
        pw := uniGUIApplication.UniApplication.Parameters.Values['pw'];
        CurrentUser.ValidateUser(userid, pw);
        if UniMainModule.CurrentUser.LoginStatus = TLoginStatus.lsLogined then
        begin
          UniMainModule.CurrentUser.Login('Web');
          Handled := True; //不弹出登录窗口
        end
      end;
    end;

    看上面的代码,首先从访问的url中取得登录参数 userid,及pw,注意,这里要加uniGUIApplication单元名称,不加的话,uniMainDatamodule也有个属性叫UniApplication,会与uniGUIApplication.UniApplication冲突,这不是一个对象,我在这里犯了点卡。

    接着就是实现登录逻辑,如果用户验证成功,将事件参数Handled设置为True,表示完成登录,不再需要弹出登录窗口。

    现在用带用户登录信息的url访问uniGUI应用,就直接显示主窗口,完成自动登录。

    另外,举一反三,利用这个OnBeforeLogin事件,还可以解决F5刷新浏览器时的自动登录,用户登录后将用户名与密码保存到Cookie中,然后象上面的代码一样,读出来实现登录。具体的代码就不写了。

    3.在自己的app中,根据当前用户信息,生成带用户名与密码的url,用浏览器访问uniGUI,完美集成。这里就不提供参考代码。

    最后要说的是,在普通的uniGUI的web应用中,填加手机端的Login与MainForm,uniGUI会自动识别访问的平台,如果是手机访问,则自动显示手机端的登录窗口与主窗口,这很好的支持了一个uniGUI应用自动支持web访问与手机访问。

    为了方便调试,我们可以在Chrome浏览器中模拟手机访问,具体操作:按crtl+shift+i,切换到开发者模式,然后点击标记的按钮,就变成手机了:

  • 相关阅读:
    函数
    python操作文件
    POJ-2689-Prime Distance(素数区间筛法)
    POJ-2891-Strange Way to Express Integers(线性同余方程组)
    POJ-2142-The Balance
    POJ-1061-青蛙的约会(扩展欧几里得)
    Educational Codeforces Round 75 (Rated for Div. 2) D. Salary Changing
    Educational Codeforces Round 75 (Rated for Div. 2) C. Minimize The Integer
    Educational Codeforces Round 75 (Rated for Div. 2) B. Binary Palindromes
    Educational Codeforces Round 75 (Rated for Div. 2) A. Broken Keyboard
  • 原文地址:https://www.cnblogs.com/kinglandsoft/p/13655657.html
Copyright © 2011-2022 走看看