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

来源:互联网 发布:java导出excel工具类 编辑:程序博客网 时间:2024/05/18 01:48

方法一,直接修改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表新建一个部门的字段,然后在建立了一个表,来说明每一个部门可以同时登陆的人数。之后就用类似于方法一的代码来控制登陆的人数。

原创粉丝点击