CSFrameworkV6旗舰版开发框架 - 集成软件授权认证系统


CSFrameworkV6旗舰版开发框架 - 集成软件授权认证系统

CSFrameworkV6旗舰版开发框架 - 集成软件授权认证系统

一、概述

软件客户证书

登记软件客户,使用管理员工具制作2种软件客户证书

  • 在线用户数授权证书(包含客户编码、客户名称、软件到期日期、在线用户参数配置等信息)
  • MAC地址证书(保护MAC地址、软件到期日期等信息)

证书与认证逻辑关系

CSFrameworkV6旗舰版开发框架 - 集成软件授权认证系统

 

在线用户并发数授权逻辑关系

系统记录用户登入、登出历史记录,包括用户编码、用户电脑MAC地址、用户在线状态等信息。

在校验证书时,统计在线用户数量与证书允许的在线用户数做比较。

CSFrameworkV6旗舰版开发框架 - 集成软件授权认证系统

 

两种认证策略

CSFrameworkV6旗舰版开发框架 - 集成软件授权认证系统

策略1:在线用户并发数+软件过期时间控制

表名:sys_UserLicenseOnlineConcurrency

证书识别码(软件客户编码), 对应CustomerCode字段。

CSFrameworkV6集成软件授权认证系统

策略2:MAC白名单+软件过期时间控制

表名:sys_UserLicenseWhitelist

证书识别码(获取电脑的mac地址)

CSFrameworkV6集成软件授权认证系统

 

两种联机认证(在线认证)方式

数据库直连模式

dalUser.ValidateLicense方法:

C# 全选
/// <summary>
/// 校验软件证书
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public LicenseValidateResult ValidateLicense(LicenseValidateRequest input)
{
    //省略代码......
}

WebAPI方式

SystemSecurityController控制器 ValidateLicense 接口:

C# 全选
[AllowAnonymous]// 登录界面调用,无token
[HttpPost]
public LicenseValidateResult ValidateLicense(LicenseValidateRequest input)
{//OK
    return _business.ValidateLicense(input);
}

参考文章

C/S开发框架两种后台连接:直连模式与WebApi模式(ADODirect与WebApi)

二、使用VS2022集成软件授权功能

CSFrameworkV6.1开发框架已集成软件授权功能,下面的内容提示您修改了那些内容,方便您快速了解软件集成。

VS Project引用DLL库

CSFrameworkV6旗舰版开发框架 - 集成软件授权认证系统

  • CSFramework.LicenseCore - 核心库(.NET8版本)
  • CSFramework.LicenseCoreWindows - 核心库(.NET8 Windows版本)
C# 全选
<Reference Include="CSFramework.LicenseCore">
	<HintPath>..\Debug\net8.0-windows\CSFramework.LicenseCore.dll</HintPath>
</Reference>
<Reference Include="CSFramework.LicenseCoreWindows">
	<HintPath>..\Debug\net8.0-windows\CSFramework.LicenseCoreWindows.dll</HintPath>
</Reference>

Program.cs 启用软件授权认证功能

CSFrameworkV6旗舰版开发框架 - 集成软件授权认证系统

启用软件用户认证

在程序入口,启用软件用户认证:

C# 全选
//不启用软件用户认证
LicenseManager.Options.UseLicense = false;

//启用软件用户认证
LicenseManager.Options = new ClientAppConfig
{
    UseLicense = true,//启用软件认证
    SystemCode = "CSFrameworkV6",//ERP/MES,您的软件编码或名称

    //LicenseStrategyType = LicenseStrategyType.OnlineUser, //策略1:在线用户并发数+软件过期时间控制
    //LicenseId = "www.csframework.com", //证书识别码

    LicenseStrategyType = LicenseStrategyType.MacWhitelist,//策略2:MAC白名单+软件过期时间控制
    LicenseId = NetTools.GetLocalMac(),//获取电脑的mac地址
};

 

ClientAppConfig 类

C# 全选
/// <summary>
/// 客户端程序应用配置,用于实例化软件授权策略
/// </summary>
public class ClientAppConfig
{
    /// <summary>
    /// 是否启用软件证书。如果启用,用户登录或数据操作校验证书信息。
    /// </summary>
    public bool UseLicense { get; set; } = false;

    /// <summary>
    /// 您的软件系统编码,如:ERP/MES/HIS
    /// </summary>
    public string SystemCode { get; set; }

    /// <summary>
    /// 证书唯一识别码(软件客户编码或MAC地址)
    /// </summary>
    public string LicenseId { get; set; }

    /// <summary>
    /// 策略类型(在线用户数策略、mac白名单策略)
    /// </summary>
    public LicenseStrategyType LicenseStrategyType { get; set; } = LicenseStrategyType.MacWhitelist;

}

 

软件认证

当用户进行操作时执行一次软件认证,如:增、删、改、查或系统登录操作。

AssertLicense 方法

在frmBase基类窗体定义AssertLicense 方法,然后在派生类调用 AssertLicense 方法,实时检测证书是否有效、软件是否过期。

C# 全选
/// <summary>
/// 证书认证
/// </summary>
/// <param name="failedMessage">认证失败默认消息</param>
/// <exception cref="Exception"></exception>
protected virtual void AssertLicense(string failedMessage = "证书认证失败!")
{            
    bool isValid = LicenseValidation.Validate(LicenseManager.CurrentLicense, out var errMsg);
    if (isValid == false)
    {
        throw new BizException(failedMessage + errMsg);
    }
}

下面是开发框架提供软件认证方法:

用户登录校验证书

用户登录时校验证书。

frmLogin用户登录窗体的【登录】按钮的Click事件:

C# 全选
private void btnLogin_Click(object sender, EventArgs e)
{
    this.AssertLicense();
    //省略代码......
}

数据窗体基类增、删、改三个按钮事件校验证书

C# 全选
/// <summary>
/// 新增记录
/// </summary>
/// <param name="sender"></param>
public virtual void DoAdd(IButtonInfo sender)
{
    this.AssertLicense();
    //省略代码......
}

 

C# 全选
/// <summary>
/// 修改数据
/// </summary>
/// <param name="sender"></param>
public virtual void DoEdit(IButtonInfo sender)
{
    this.AssertLicense();
    //省略代码......
}

 

C# 全选
/// <summary>
/// 删除记录
/// </summary>
/// <param name="sender"></param>
public virtual void DoDelete(IButtonInfo sender)
{
    this.AssertLicense();
    //省略代码......
}

查询数据(业务单据界面)

如采购订单【查询】按钮校验证书:

C# 全选
private void btnQuery_Click(object sender, EventArgs e)
{
    this.AssertLicense();
    //省略代码......
}

保存数据(业务单据界面)

如采购订单【保存】按钮校验证书:

C# 全选
public override void DoSave(IButtonInfo sender)// 保存数据
{
    this.AssertLicense();//校验证书
    //省略代码......
}

 

实时更新在线用户清单(UpdateOnlineCache方法)

调用 UpdateOnlineCache 方法目的是更新FlagOnline状态。

  • Y:在线(用户登录)
  • N:离线(用户登出)
  • F:闲置(如15分钟没有任何操作自动设置离线)

CSFrameworkV6旗舰版开发框架 - 集成软件授权认证系统

打开dalUser.cs文件,Login/Logout两个方法调用 UpdateOnlineCache 方法。

打开dalBase.cs文件,Update<>方法调用 UpdateOnlineCache 方法。

 

三、修改为.NET7版本

CSFrameworkV6.1已升级到.NET8版本,配套的授权系统默认为.NET8版本,如果您的项目采用CSFrameworkV6.0或.NET7,需要降配。

修改目标框架(TargetFramework)

请按下面步骤修改4个Project的目标框架:

CSFrameworkV6旗舰版开发框架 - 集成软件授权认证系统

CSFrameworkV6旗舰版开发框架 - 集成软件授权认证系统

修改Nuget包版本

修改4个Project的Nuget包版本,改为7.0版本,具体的版本号与您的项目相同即可。

CSFrameworkV6旗舰版开发框架 - 集成软件授权认证系统

四、其他

查看证书

主窗体任务栏右下角,点击【软件证书】按钮:

CSFrameworkV6集成软件授权认证系统

 

《用户操作手册》

CSFramework.Authentication 软件证书管理系统 - 制作软件授权证书-开发框架文库

参考:CSFramework.Authentication 软件授权认证系统 用户操作手册。

https://www.cscode.net/archive/csframeworkv6/622165775466501.html

 

版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
评论列表

发表评论

评论内容
昵称:
关联文章

CSFrameworkV6旗舰开发框架 - 集成软件授权认证系统
C/S架构软件开发平台 - 旗舰V6.1新功能 - 增加软件授权认证模块
CSFrameworkV6旗舰新功能-客户端软件授权(在线用户并发数+MAC白名单+软件到期时间)
CS软件授权注册系统-证书注册与认证接口
C/S软件开发框架视频下载 - CSFrameworkV6旗舰代码生成器视频(2023)
C/S架构软件开发平台旗舰V6.1迭代开发记录-工作流程引擎集成
CSFramework.Authentication 软件授权认证系统 - 软件测试报告
CS软件授权注册系统V3 - 开发手册 - 软件集成与用户注册
C/S软件开发框架视频下载 - CSFrameworkV6旗舰软件开发框架Demo视频1080p
CSFrameworkV6旗舰-成功案例-纸箱行业ERP系统
CS软件授权注册系统V3 - 开发手册 - MES/ERP系统客户端证书认证
CSFrameworkV6主程序集成自动升级程序
CSFrameworkV6旗舰开发框架客户交接文件清单
CSFramework.Authentication 软件授权证书管理系统
C/S快速开发框架旗舰CSFrameworkV6.0 - VS开发环境配置
C/S软件开发框架视频下载 - CSFrameworkV6旗舰代码生成器生成单表报表1080P
C/S软件开发框架视频下载 - CSFrameworkV6旗舰国际化多语言功能支持1080p
CSFrameworkV5主程序集成自动升级程序
CSFrameworkV6旗舰 - Oracle数据库笔记
C/S架构软件开发平台 - 旗舰CSFrameworkV6 Bug修改记录