CS软件授权注册系统V3 - 开发手册 - 软件集成与用户注册
CS软件授权注册系统V3 - 开发手册 - 软件集成与用户注册
目录
1、文章摘要
将授权注册系统功能集成到您的MES/ERP系统。
需要完成以下两个部分:
- 打开软件注册界面
- 证书验证
2、打开软件注册界面
您的MES/ERP需要提供一个用户注册入口,打开软件注册界面,方便用户输入注册码。
常用做法:
- 登录界面注册使用软件
- 关于我们--》系统注册
本文提供的案例在登录界面进行软件注册。
系统登录界面设计
参考界面设计:
软件没有授权注册,红色高亮显示,同时显示【未注册】图片。
添加DLL引用
添加2个DLL:
- CSFramework.LicenseCore.dll
- CSFramework.LicenseCoreWindows.dll
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);
}
}
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
csframework-license-v3 C/S框架网