`
baibaiyun
  • 浏览: 26877 次
社区版块
存档分类

解析登录百宝云授权系统相关功能

 
阅读更多

登录授权系统

    登录授权系统功能就是:只授权的用户机器才能使用我们开发的软件,非授权的机器是不能使用软件的。

    下面我们就依次来学习怎么实现这个系统

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-->

  • 大小: 80.7 KB
  • 大小: 29.4 KB
1
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics