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

登录百宝云授权系统教程

 
阅读更多

百宝云登录授权系统

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

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

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创建数据库()
结束

<pre name="code" class="html">// 按下主按钮触发的功能方法
功能 _mainbutton()
    发送文本消息("你好mainbutton")
结束

功能 _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)
    否则
        消息框("未授权用户")
    结束
    返回 真
结束

//退出按钮_点击操作
功能 登录授权_退出_点击()
    退出()
    返回 真
结束


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics