• 避免一个用户多次登陆的解决方法


    方法一,直接修改Info类的StartupPost方法,因为我们修改比较复杂,以下我就直接引用junevoful的代码来做范例。

    void startupPost()

    {

        int         counter;

        int         num = 0;

        int         maxSessions = Info::licensedUsersTotal();

        xSession    session;

        UserInfo    userInfo;

        UserId      currentUserId;

        ;

     

        currentUserId = curuserid();

        for(counter = 1; counter < maxSessions;counter++ )

        {

            session = new xSession(counter, true);

            if(session && session.userId())

            {

                select firstOnly userInfo

                    where userInfo.id == session.userId();

     

                if (userInfo && (currentUserId == session.userId()))

                { 

                    num++ ;

                }

            }

        }

     

        if (num > 1)

        {

            box::info("此用户ID已经登陆,请退出。")

            {

                infolog.shutDown(true);

            }

        }

    }

     

    方法二,是方法一的进一步改进,也是我们在使用的。

    不同的部门可能有不同的上班时间,这样在licence有限的情况下,可能较早上班的部门会登陆较多的人,而较晚上面的部门就无法登陆。为了避免这种不公平的现象发生,我们事先在SysUserInfo表新建一个部门的字段,然后在建立了一个表,来说明每一个部门可以同时登陆的人数。之后就用类似于方法一的代码来控制登陆的人数。

  • 相关阅读:
    navcat15 安装+激活
    页面调用百度地图但是使用了https证书之后不显示
    net core webapi 数据库连接
    asp.net core webAPI跨域问题
    本机端口(出入站)配置
    Vue页面跳转路由
    net core --- Swagger搭建(net core 3.1 版本)
    sqlserver数据库中生成随机数
    随机生成登录验证码(4位)
    定时器
  • 原文地址:https://www.cnblogs.com/Fandyx/p/2761593.html
Copyright © 2020-2023  润新知