CS软件授权注册系统V3 - 开发手册 - 软件集成与用户注册


CS软件授权注册系统V3 - 开发手册 - 软件集成与用户注册-开发框架文库

CS软件授权注册系统V3 - 开发手册 - 软件集成与用户注册

1、文章摘要

将授权注册系统功能集成到您的MES/ERP系统。

需要完成以下两个部分:

  • 打开软件注册界面
  • 证书验证

2、打开软件注册界面

您的MES/ERP需要提供一个用户注册入口,打开软件注册界面,方便用户输入注册码。

常用做法:

  • 登录界面注册使用软件
  • 关于我们--》系统注册

本文提供的案例在登录界面进行软件注册。

系统登录界面设计

参考界面设计:

CS软件授权注册系统V3 - 开发手册 - 软件集成与用户注册

软件没有授权注册,红色高亮显示,同时显示【未注册】图片。

添加DLL引用

添加2个DLL:

  • CSFramework.LicenseCore.dll
  • CSFramework.LicenseCoreWindows.dll

CS软件授权注册系统V3 - 开发手册 - 软件集成与用户注册

Form.Load事件

C# 全选
private void frmLogin_Load(object sender, EventArgs e)
{
    //加载本地证书信息
   this.LoadLicenseFile();            
}

加载本地证书文件

C# 全选
/// <summary>
/// 加载本地证书文件
/// </summary>
private LicenseView LoadLicenseFile()
{
    //加载本地证书文件
    LicenseView license = LicenseManager.Instance.LoadLicense();

    //保存证书实例
    LicenseManager.CurrentLicense = license;

    //显示证书状态图片
    ShowLicenseStatusImage(license);

    var isSuccess = license != null && license.ClientHID == LicenseManager.GetHID();
    if (isSuccess)
    {
        btnRegister.Text = "已注册,点击查看授权";
        btnRegister.LinkArea = new LinkArea(0, btnRegister.Text.Length);
        btnRegister.LinkColor = Color.DarkGreen;
        btnLogin.Enabled = true;
        lblSupplier.Text = "软件供应商:" + license.Publisher;
    }
    else
    {
        btnRegister.Text = "软件没有授权,点击注册";
        btnRegister.LinkArea = new LinkArea(0, btnRegister.Text.Length);
        btnRegister.LinkColor = Color.Red;
        btnLogin.Enabled = false;
        lblSupplier.Text = "软件供应商:" + LicCommon.DEF_PUBLISHER;
    }

    return license;
}

 

方式1:点击注册链接(WebApi+离线注册)

C# 全选
private void btnRegister_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    //没有注册,打开软件注册界面
    if (LicenseManager.CurrentLicense == null)
    {
        if (frmRegister.Execute())
        {
            this.LoadLicenseFile();//重新加载授权文件
        }
    }
    else
    {
        //已注册,显示证书
        frmLicenseViewer.Execute(LicenseManager.CurrentLicense);
    }
}

 

方式2:点击注册链接(WebApi+离线注册+数据库直连模式注册)

C# 全选
private void btnRegisterFull_Click(object sender, EventArgs e)
{
    //打开软件注册界面(WebApi+离线注册+直连数据库注册)     
    var isRegisted = frmRegister.Execute(new DatabaseRegisterBuilder
    {
        DbConfig = RegisterDbConfig.Default,
        Databases = Enum.GetNames<EF.DatabaseType>().ToList(),
        TestConnecting = (config) =>
        {//测试数据库连接
            IDatabase db = LicenseDAL.DatabaseProvider.GetDatabase(RegisterDbConfig.Default);
            return db.GetServerTime() > DateTime.Today.AddYears(-100);
        },
        Register = (config) =>
        {//注册
            IDatabase db = LicenseDAL.DatabaseProvider.GetDatabase(RegisterDbConfig.Default);
            return new dalLicenseClient(db).Register(config);
        }
    });

    if (isRegisted) //注册成功,初始化授权服务器连接策略
    {
        LicenseManager.LicenseServer = LicenseServerProvider.Create();
    }
}

 

显示证书状态图片

C# 全选
private void ShowLicenseStatusImage(LicenseView lic)
{
    pic.Image = null;

    if (lic == null) //没有证书
    {
        pic.Image = Properties.Resources.未注册;
    }
    else //有证书文件
    {
        if (lic.IsDemoVersion)
        {
            pic.Image = Properties.Resources.试用版;
        }
        else
        {
            if (lic.IsExpired() || lic.Status == LicStatus.作废过期)
            {
                pic.Image = Properties.Resources.已过期;
            }
            if (lic.IsStopUse())
            {
                pic.Image = Properties.Resources.暂停使用;
            }
        }
    }
}

 

btnLogin登录按钮事件

C# 全选
private void btnLogin_Click(object sender, EventArgs e)
{
    AssertLicense();//用户登录:验证一次证书

    //
    //此处省略代码...
    //bool isLogin = new bllUser().Login("admin","123456"); 
    //
    bool isLogin = true;//模拟终端用户登陆成功

    if (isLogin)
    {
        LicMsg.ShowInformation("证书正常,模拟打开主窗体......");
        this.Close();
    }
    else
    {
        LicMsg.Warning("登录失败,请重新输入账号和密码!");
    }
}

 

3、证书验证

设计一个通用的方法进行证书验证:

C# 全选
protected virtual void AssertLicense(string message = "证书认证失败!")
{                        
    bool isValid = LicenseValidation.Validate(LicenseManager.CurrentLicense, out var errMsg);
    if (isValid == false)
    {
        throw new Exception(message + errMsg);
    }
}

 

footer .net快速开发平台创造卓越品质-开发框架文库

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

发表评论

评论内容
昵称:
关联文章

CS软件授权注册系统V3 - 开发手册 - 软件集成用户注册
CS软件授权注册系统V3 - 开发手册 - 软件功能授权应用
CS软件授权注册系统V3 - 开发手册 - MES/ERP系统客户端证书认证
CS软件授权注册系统V3 - 开发手册 - MES/ERP软件显示Demo Version
CS软件授权注册系统V3-测试案例-离线注册验证证书测试
CS软件授权注册系统V3-测试案例-在线用户并发数限制测试
CS软件授权注册系统V3 - 试用版下载
CS软件授权注册系统V3 - 发布证书
软件用户授权注册系统 V2.1 (2021-release)
CS软件授权注册系统V3 - 购买方式
软件用户授权注册系统 V2.1 - 软件集成使用指南
软件用户授权注册系统 V2.1 - 软件简介
CS软件授权注册系统V3-测试案例-注册码测试
CS软件授权注册系统V3-测试案例-连接授权服务器WebApi
CS软件授权注册系统V3-测试案例-限制系统功能(菜单权限)测试报告
CS软件授权注册系统V3-测试案例-证书到期测试(软件到期测试)
C# Winform 软件用户授权注册系统正式发布
CS软件授权注册系统V3-测试案例-证书授权状态测试
CS软件授权注册系统V3-测试案例-MAC白名单测试
CS软件授权注册系统V3-测试案例-限制系统功能测试