认证机制

函数功能:

用于获取 Total Control 脚本开发所用的开发 token。

基于 Token 的身份验证方法:

使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录,流程如下:

  • 客户端使用用户名跟密码请求登录
  • 服务端收到请求,去验证用户名与密码
  • 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
  • 客户端收到 Token 以后可以把它存储起来,比如,放在 Cookie 里或者 Local Storage 里
  • 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
  • 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据

请求方式:GET
http://IP:8090/TotalControl/v1/login
参数说明:

Header 参数说明:

参数名 类型 必选 描述
IP string Y 访问 Total Control 服务器的 IP 地址
Authorization string Y 将用户名和密码(username:password)组装进行 base64 编码生成的字符串。
如何设置 Total Control REST API 的参数,例如:用户名和密码,请看这里
返回示例:

成功,则返回:

{
    "status": true,
    "value": {
    "token": "270eq7lXQK8bXYsJ"
    }
}
字段 类型 描述
token string Total Control TOKEN
status boolean true:成功; false:失败


注意事项:
Total Control 提供的 REST API 响应格式都是 JSON ,返回值通常由关键字 "status" 和 "value" 组成,
status: 接口执行成功与否
value: 执行接口的返回信息

示例:获取 Total Control 脚本开发所用的开发 token

注意:下列示例是通过本机访问 Total Control 服务器,所以 IP 都是用的 "localhost"。

CURL 请求示例:

//将用户名和密码(sigma:3D391497)组装进行 base64 编码生成的字符串为:'c2lnbWE6M0QzOTE0OTc='
curl -H Authorization:"c2lnbWE6M0QzOTE0OTc=" http://localhost:8090/TotalControl/v1/login
RingoJS 请求示例:

可以复制下面的代码,在 Total Control 的脚本终端中执行,也可以保存为后缀为 js 的文件, 例如:example.js,在Total Control 执行器中执行。

//导入一些 ringoJS 的包
var {request} = require('ringo/httpclient');
var base64 = require('ringo/base64');
//将用户名密码编码,'sigma:3D391497'是用户名和密码,在Total Control系统设置里面可以看到
var userpass = base64.encode('sigma:3D391497');
//用于获取 Total Control 脚本开发所用的开发 token
//请求方式 GET, 
//请求URL:http://localhost:8090/TotalControl/v1/login
//请求头:'Authorization': base64.encode('sigma:3D391497')
var gettoken = request({
    method: 'GET',
    url: 'http://localhost:8090/TotalControl/v1/login',
    headers: {
    'Authorization': userpass
   }
});
//输出返回的响应内容
print("get token,Return: " + gettoken.content);
RingoJS 示例运行结果:

成功,则返回:

get token,Return: {"status":true,"value":{"token":"iSvz5On0bWL48LUU"}}
易语言请求示例:

温馨提示,关于易语言的更多信息,请看:
如何安装易语言
学写第一个易语言程序
如何使用易语言控制一台设备
如何使用易语言控制多台设备


.版本 2

.程序集 窗口程序集_启动窗口

.子程序 __启动窗口_创建完毕
.局部变量 base64, 文本型
.局部变量 token, 文本型
.局部变量 j_token, 类_json, , , 用来解析获取 token 的 json
.局部变量 bool, 逻辑型

base64 = 到文本 (编码_BASE64编码 (到字节集 (“sigma:3D391497”)))
输出调试文本 (“将用户名和密码组装成 sigma:3D391497 进行 base64 编码生成的字符串为: ” + base64)
bool = j_token.解析 (到文本 (网页_访问_对象 (“http://localhost:8090/TotalControl/v1/login”, 0, , , , “Authorization:” + base64, , , , , , , , , )))
.如果 (bool)
    输出调试文本 (“第一步,获取 token,返回值为:” + j_token.取数据文本 ())
    token = j_token.取通用属性 (“['value'].token”)
    输出调试文本 (“获取的 token 值为: ” + token)

.否则
    输出调试文本 (“获取 token 失败”)
.如果结束
易语言代码运行结果:

成功,则返回:

* 将用户名和密码组装成 sigma:3D391497 进行 base64 编码生成的字符串为: c2lnbWE6M0QzOTE0OTc=
* 第一步,获取 token,返回值为:{"status":true,"value":{"token":"U56adwI779838M6F"}}
* 获取的 token 值为: U56adwI779838M6F