CSFrameworkV6 | 软件用户数授权 | 通过控制在线用户数实现逻辑|C/S开发框架
作者:csframework|C/S框架网  发布日期:2023/08/07 18:39:43

CSFrameworkV6 | 软件用户数授权 | 通过控制在线用户数实现逻辑|C/S开发框架

一、前言

本文讲解CSFrameworkV6旗舰版在线用户数限制逻辑实现,采用直连模式(ADO-Direct),在DAL层调用相关方法。

WebApi服务端采用其他方式实现,本文不作介绍。

二、系统主要业务功能限制

用户操作主要业务表单时,如进行【保存】、【查询】等操作,系统自动检查在线用户,若在线用户超出软件许可的用户数,系统会终止操作,使当前操作无效。

需要限制的主要功能有:

业务单据:销售单、生产单、送货单、采购单、入库单、出库单等

基础资料:客户资料、供应商资料等。

三、业务单据DAL层调用接口

以下是【销售订单】DAL层需要检查在线用户数限制、添加接口访问日志的方法:

Update方法

保存数据需要检查在线用户数限制,并且添加接口访问日志

CSFrameworkV6 | 软件用户数授权 | 通过控制在线用户数实现逻辑|C/S开发框架

Query方法

查询接口,添加接口访问日志

CSFrameworkV6 | 软件用户数授权 | 通过控制在线用户数实现逻辑|C/S开发框架

GetDataByKey方法

获取一张业务单据。

CSFrameworkV6 | 软件用户数授权 | 通过控制在线用户数实现逻辑|C/S开发框架

四、基础资料DAL层调用接口

以下是【客户管理】DAL层需要检查在线用户数限制、添加接口访问日志的方法:

Update 方法

CSFrameworkV6 | 软件用户数授权 | 通过控制在线用户数实现逻辑|C/S开发框架

GetDataByKey方法

获取一条基础资料。

CSFrameworkV6 | 软件用户数授权 | 通过控制在线用户数实现逻辑|C/S开发框架

五、系统修改部分

在系统数据库添加接口访问日志表 (sys_UserAccessLog)

在系统数据库添加软件用户许可配置表 (sys_LicenseConfig)

dalBase 添加 3个基类方法

CSFrameworkV6 | 软件用户数授权 | 通过控制在线用户数实现逻辑|C/S开发框架

六、初始化软件用户配置表

系统数据库增加2张表,并初始化数据。

sys_LicenseConfig 表结构

SQL 全选
CREATE TABLE [dbo].[sys_LicenseConfig](
	[isid] [varchar](50) NOT NULL,
	[ParamType] [varchar](20) NOT NULL,
	[ParamCode] [varchar](50) NOT NULL,
	[ParamName] [nvarchar](50) NULL,
	[ParamValue] [nvarchar](250) NULL,
	[Description] [nvarchar](250) NULL,
 CONSTRAINT [PK_sys_LicenseConfig] PRIMARY KEY CLUSTERED 
(
	[isid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

初始化数据:

SQL 全选
DELETE FROM sys_LicenseConfig;

INSERT INTO sys_LicenseConfig([isid],[ParamType],[ParamCode],[ParamName],[ParamValue],[Description])
VALUES ('100001','System','LicenseNumber','在线用户许可数量',1,'在线用户许可数量,账号+MACD作为判断依据');

INSERT INTO sys_LicenseConfig([isid],[ParamType],[ParamCode],[ParamName],[ParamValue],[Description])
VALUES ('100002','System','HoursRangeActiveUsers','小时数,判断活跃用户',4,'如:4小时内有操作记录的用户为有效在线用户');

INSERT INTO sys_LicenseConfig([isid],[ParamType],[ParamCode],[ParamName],[ParamValue],[Description])
VALUES ('100003','System','HoursRangeLeave','小时数,判断闲置用户',1,'如:1小时内没有操作的用户视为闲置用户');

sys_UserAccessLog 表结构

SQL 全选
CREATE TABLE [dbo].[sys_UserAccessLog](
	[isid] [varchar](50) NOT NULL,
	[UID] [varchar](50) NULL,
	[AccessTime] [datetime] NULL,
	[MethodName] [varchar](50) NULL,
	[MACD] [varchar](50) NULL,
	[AccessType] [varchar](20) NULL,
 CONSTRAINT [PK_sys_UserAccessLog] PRIMARY KEY CLUSTERED 
(
	[isid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

七、程序修改部分

用户登录 dalUser.Login

添加接口访问日志。

CSFrameworkV6 | 软件用户数授权 | 通过控制在线用户数实现逻辑|C/S开发框架

用户登出 dalUser.Logout

用户登出系统要更新用户在线状态。

用户登出 Logout 重要逻辑

逻辑:根据相同的登录账号不同的MAC地址,查询 sys_LogLogin 表最后一条记录,判断类型:

LoginType=I, 表示登录,LoginType=O 表示登出。

当用户所有MAC地址 LoginType = O 的时候,将用户设置为登出状态FlagOnline=N

只要一个MAC地址是登录状态,将用户设置为在线状态FlagOnline=Y

在线用户管理&查询 dalUser.GetOnlineUserList

重要逻辑

在线用户定义:

1、一个登录账号一人或多人使用(不同的电脑登录)

2、账号+MAC地址表示一个在线用户

八、在线用户管理

该功能包含查询在线用户、强制用户下线。

CSFrameworkV6 | 软件用户数授权 | 通过控制在线用户数实现逻辑|C/S开发框架

查询

查询用户表,关联登录日志表。

设置下线

强制执行用户登出系统。

本文讲解了通过在线用户数控制软件授权,实现逻辑比较简单,C/S框架提供专业的软件授权注册系统,

CSFrameworkV6 | 软件用户数授权 | 通过控制在线用户数实现逻辑|C/S开发框架

详情:软件用户注册模式 - Auth - 软件授权注册系统V2.1-C/S开发框架 (cscode.net)

C/S框架网|原创精神.创造价值.打造精品


扫一扫加作者微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务
上一篇 下一篇