登录授权系统
登录授权系统的功能就是:只有授权的用户机器才能使用我们开发的软件,非授权的机器是不能使用软件的。
下面我们就依次来学习怎么实现这个系统?
2.1登录系统设计图
2.2 授权系统的相关功能模块实现
2.2.1 授权系统的相关数据库操作
///////////////////////////////// 数据库相关操作专用文件 ////////////////////////////////
// 创建数据库 功能 mySql创建数据库() 变量 返回数组,ret ret = sqlite数据库执行返回数组("授权数据库.db","create table IF NOT EXISTS userInfo(id integer primary key autoincrement,name,macid,islogin,isBlackUser)",返回数组)//创建表 如果(!ret) 发送文本消息("创建表失败:"& 获取错误信息(1)) 返回 假 否则 返回 真 结束 结束
// 向数据里添加一条数据 功能 mySql插入数据(name,macid) 变量 retArray = null,inserText inserText = 字符串格式化("insert into userInfo(name,macid,islogin,isBlackUser) values('%s','%s','false','false')",name,macid) 变量 ret = sqlite数据库执行返回数组("授权数据库.db",inserText,retArray) 如果(ret) 发送文本消息("插入一条新的数据") 返回 retArray 否则 发送文本消息("插入数据失败,原因:"&获取错误信息(1)) 返回 null 结束 结束
// 查询所有信息 功能 mySql查询所有信息() 变量 sqlstr = "select * from userInfo" 变量 返回数组,ret ret = sqlite数据库执行返回数组("授权数据库.db",sqlstr,返回数组) //sendtextmsg("查询结果:"&返回数组) 返回 返回数组 结束
// 查询所有信息By name macID 功能 mySql查询所有信息ByNameMacID(name,macID) 变量 sqlstr = 字符串格式化("select * from userInfo where name='%s' and macid='%s'",name,macID) 变量 返回数组,ret ret = sqlite数据库执行返回数组("授权数据库.db",sqlstr,返回数组) 返回 返回数组 结束
// 允许登录
功能 mySql允许登录ByName(name)
变量 返回数组,ret
变量 sqlstr = 字符串格式化("select * from userInfo where name='%s'",name)
ret = sqlite数据库执行返回数组("授权数据库.db",sqlstr,返回数组)
如果(ret && 返回数组 != null)
sqlstr = 字符串格式化("update userInfo set islogin='true' where name='%s'",name)
ret = sqlite数据库执行返回数组("授权数据库.db",sqlstr,返回数组)
如果(!ret)
发送文本消息("sql允许登录ByName失败,原因:"&获取错误信息(1))
结束
返回 真
否则
发送文本消息("数据库没有名称为:"&name&"的数据,修改失败")
返回 假
结束
结束
2.2.2 授权系统的验证与交互界面的实现
变量 当前用户名 = "" // 程序入口功能 功能 _initial() 发送文本消息("登录系统启动") mySql创建数据库() 结束 // 按下主按钮触发的功能方法 功能 _mainbutton() 发送文本消息("你好mainbutton") 结束 // arg1在这里为用户名或者注册码 // arg2在这里为机器码 功能 _userlogin(token,arg1,arg2,out_ret) 发送文本消息("arg1="&arg1&" arg2="&arg2) 如果(!效验用户(arg1,arg2)) 返回 假 // 效验失败,不允许登录 否则 // 验证成功就直接登录 返回 真 结束 返回 真 结束
功能 效验用户(name,macID) // 根据mane与macID一起查询 变量 查询数据 = mySql查询所有信息ByNameMacID(name,macID) 如果(查询数据 != null) 如果(查询数据[0]["islogin"] == "true") 发送文本消息(name&"登录成功") 返回 真 否则 发送文本消息(name&"未授权,不运行登录") 返回 假 结束 否则 mySql插入数据(name,macID) // sendconfigconfirm("授权","是否为下面的用户授权登录?","用户","待授权用户:"& name,"yesno","待授权") 结束 返回 假 结束
功能 _loadconfig() 变量 arr = 数组("未授权用户","已授权用户","退出") 变量 ret = 格式化单选框配置("UI_主界面",arr,"授权系统,查看未授权与已授权用户!","主界面") 返回 ret 结束
//交互界面的事件的枢纽,用户在app中点击所有交互界面中的控件,都会经过这个函数 功能 _submitconfig(id,value) 发送文本消息("_submitconfig id:"&id&" value:"&value) // 在主界面上的操作 如果(id == "UI_主界面") 如果(value == "未授权用户") 返回 "config_未授权用户列表" 否则如果(value == "已授权用户") 返回 "config_已授权用户列表" 否则 返回 "exit" // 退出交互界面 结束 结束
// 在未授权界面上的操作
如果(id == "UI_未授权用户")
当前用户名 = value
返回 "config_是否授权当前用户"
结束
// 在确认授权界面上的操作
如果(id == "UI_确认授权用户")
如果(value == "yes")
对当前用户授权()
返回 "exit"
否则
返回 "config_未授权用户列表"
结束
结束
// 未做任何处理就退出交互界面,避免出现错误页面 返回 "exit" // 退出交互界面 结束 功能 对当前用户授权() 如果(mySql允许登录ByName(当前用户名)) 发送文本消息("对用户:"&当前用户名&"授权成功") 否则 发送文本消息("对用户:"&当前用户名&"授权失败") 结束 结束
// 未授权用户列表界面 功能 config_未授权用户列表() //发送文本消息("config_未授权用户列表 11") 变量 用户列表 = mySql查询所有信息() 变量 待授权列表 = 数组() 变量 size = 数组大小(用户列表) 遍历(变量 i = 0; i < size; i++) 如果(用户列表[i]["islogin"] == "false") 关联数组追加元素(待授权列表,用户列表[i]["name"]) 结束 结束 返回 格式化单选框配置("UI_未授权用户",待授权列表,"未授权的用户列表","未授权用户") 结束
// 已授权用户列表界面 功能 config_已授权用户列表() 变量 用户列表 = mySql查询所有信息() 变量 已授权列表 = 数组() 变量 size = 数组大小(用户列表) 遍历(变量 i = 0; i < size; i++) 如果(用户列表[i]["islogin"] == "true") 关联数组追加元素(已授权列表,用户列表[i]["name"]) 结束 结束 返回 格式化单选框配置("UI_已授权用户",已授权列表,"已授权的用户列表","已授权用户") 结束
// 确定是否对选择的用户进行授权的界面
功能 config_是否授权当前用户()
返回 格式化确认框配置("UI_确认授权用户","是否对当前选择的用户授权登录?",当前用户名)
结束
2.3 授权系统的软件端功能实现
软件端的代码是TC代码,主要是使用了百宝云提供的COM插件来实现的。详情见下面代码:
主界面的代码处理如下:
变量 线程ID,bby 功能 授权测试端_初始化() //这里添加你要执行的代码 注册插件("rc:t_baibaoyun.dll",假) 如果(!是否注册("bby.soft")) 注册插件("rc:t_baibaoyun.dll",真) 结束 bby = 插件("bby.soft") 变量 ver = bby.ver() 调试输出(ver) 如果(0 != bby.reg("abin","e31b226281a6a5f026ba2033c946c148")) 调试输出("注册失败") 结束 如果(101 != 控件模态窗口("登录授权")) 退出() 结束 结束
主要
就是在界面的初始化里添加对COM插件的注册、插件对象的创建、reg接口执行与目标云应用的关联。
子界面:登录界面的处理
效果图
代码:
//开始按钮_点击操作 功能 登录授权_开始_点击() 变量 name = 编辑框获取文本("name","登录授权") 变量 macid = bby.getmac() 变量 buffer = 0 如果(bby.login(name,macid,buffer) == 0) 调试输出("已经是授权用户") 控件关闭子窗口("登录授权",101) 否则 消息框("未授权用户") 结束 返回 真 结束
//退出按钮_点击操作 功能 登录授权_退出_点击() 退出() 返回 真 结束
<!--EndFragment-->
相关推荐
百宝云COM开发组件是...任何语言都可以做到无缝的与百宝云应用进行连接百宝云组件内置了数十种加解密算法,与百宝云内部数十种加密算法对应,可以无缝进行加解密操作。WIN7 WIN8 WIN10 系统注意事项 1、系统已经关闭UA
支持在线更新 对接百宝云编写代码 进行对接 详情
批量生成卡、查询卡、自动更新、加密、防破解、实时监控、管理等功能,最新、最全版本。
继之前开源的易语言网络验证系统V1版、V2.0版,本次百宝云给大家开源易语言网络验证V4版,功能完善,性能稳定,获得很多脚本作者的好评。整个管理端是纯易语言编写,全开源。 本套系统功能介绍: 1、支持批量生成...
亲爱的各位电脑爱好者,我跟大家一样是一位热爱封装系统的人,但现在封装工具纷繁复杂,没有一个统一的整理,...为了能让这个工具更加完善,经过两个多月的开发,系统封装百宝箱v2 beta2终于破壳了。赶紧下载看看吧!
百宝云开发工具是一款免费使用的云服务定制开发平台工具。可以轻松地开发APP,支持网络文件存储,网络数据库,有自己的云应用开发语言,还有强大的云交互功能。
易语言百宝云网络验证系统V2.0版
百宝箱百宝箱百宝箱百宝箱百宝百宝箱百宝箱百宝箱百宝箱箱
WPS万能百宝箱2019 V27.0 全功能官方完整版,390个精品功能。支持XP至WIN10多个操作系统完美兼容,实现无缝隙对接,U盘版用户除了在原有可换机使用的基础上,实现XP--WIN10通行无阻。批量二维码识别、批量二维码生成、...
百宝箱--百购网址导航百宝箱-天气、手机等查询系统
如果您使用Excel 2013或者2016,将产生【经典】与【万能百宝箱】功能区。根据各功能的特点,对子菜单作了18个分类, 而在函数向导对话框中也新增120个以上新的函数,用于扩展Excel的基本功能。且所有功能都通用于...
易语言网络验证系统源码
它包括114个菜单功能和28个自定义函数,集142个工具于一身,堪称Excel万能百宝箱。当安装百宝箱后,如果您使用Excel 2003,则将产生【百宝箱】菜单,包括100多个子菜单;如果您使用Excel 2007或者2010,将产生【百宝...
64位版本的EXCEL万能百宝箱需要安装在64位操作系统中以及安装微软64位完整版OFFICE2007-2016、OFFICE2019功Office365运行环境支持。 EXCEL万能百宝箱64位 2019 V26.6 64位多国语言版(EXCEL2003--EXCEL2019或Office...
Excel百宝箱 9.0 破解版 批量导入图片等200种功能 Excel2007 Excel百宝箱2012是强大的制表插件,当安装百宝箱后,如果您使用Excel 2003,则将产生【百宝箱】菜单,包括100多个子菜单;如果您使用Excel 2007或者2010...
如果您使用Excel 2007或者2010,将产生【百宝箱】和【字符分离】两个功能区选项卡。另外,在“函数向导”对话框中会生成28个新的函数,用于扩展Excel的计算功能。且所有功能都通用于Excel 2002、2003、2007和2010。...
自动优化系统的小工具==优化百宝箱,优化百宝箱dowtools1.3
是用JSP开发的一个类似于个人资料管理的系统
WORD万能百宝箱29.0是集日常办公、文字编辑处理等集多功能于一体的微软办公软件超大型插件,功能面向文字处理、数据转换、编辑计算、整理排版、工程解密、段落加解密、插入特殊符号、繁简及内码转换、GB2转BIG5、BIG...