LicenseWindow:应用授权与激活组件
LicenseWindow 是一个内置的 UI 组件,用于为开发者提供标准化的授权激活流程。它集成了后端接口调用、本地 KeyValue 缓存管理以及严格的权限“守门员”逻辑。
1. 导入模块
# 导入授权窗口类
from ascript.windows.ui import LicenseWindow
2. 核心逻辑与方法
🏗️ 初始化 __init__()
初始化授权窗口并绑定相关的后端接口。
代码块:
window = LicenseWindow(app_id)
参数详解:
- app_id (str): 在 AScript 管理后台申请的应用唯一 ID。
🛠️ 暴露给前端的接口 (Exposed Methods)
.get_app_info()
从服务器获取当前应用的基本信息(如名称、是否免费等)。
- 返回:包含应用信息的字典,失败返回错误提示。
.get_cached_key()
获取本地缓存中存储的上一次激活码。
- 返回:字符串格式的激活码。
.activate_key()
执行激活逻辑。
- 参数详解:
key(str) - 用户输入的激活码。 - 流程:验证成功后会自动将激活码缓存至本地,并存储授权详细数据。
.start_app()
权限守门员逻辑。这是进入主程序的最终校验点。
- 逻辑说明:
- 若应用设置为免费版,直接放行并关闭窗口。
- 若为授权版,严格校验
status是否为1(有效)。 - 校验失败将拦截启动,并返回错误信息。
3. 授权状态说明
在授权校验过程中,license_data 中的 status 字段定义了当前授权的生命周期:
| 状态码 (Status) | 说明 | 处理结果 |
|---|---|---|
| 1 | 授权有效 | 允许进入程序 |
| 2 | 授权已过期 | 拦截并提示重新激活 |
| None / 其他 | 未激活或验证失败 | 拦截启动 |
💡 综合使用案例
通常在脚本入口处使用 LicenseWindow,通过其返回值决定是否继续执行业务逻辑。
from ascript.windows.tools import LicenseWindow
def main():
# 1. 创建授权窗口,传入你的 AppID
auth_win = LicenseWindow(app_id="your_app_id_123")
# 2. 显示窗口(此操作会阻塞,直到调用 start_app 或关闭窗口)
# 内部会自动加载内置的 license_window.html 界面
auth_win.show(title="软件授权激活", width=400, height=500)
# 3. 校验最终结果
# 只有当用户在界面点击“启动”且通过 start_app 逻辑校验时,_return_value 才为 True
if auth_win._return_value:
print("授权通过,正在启动主程序...")
# 此处编写你的主业务逻辑
else:
print("授权未通过或用户取消了操作。")
if __name__ == '__main__':
main()
4. 技术特性
- 💾 自动缓存:使用
KeyValue模块自动记录激活码,用户下次打开无需重复输入。 - 🔒 安全校验:
start_app方法作为逻辑终点,确保了即使前端 UI 被破解,后端验证逻辑依然稳固。 - 🎨 内置 UI:该类已默认关联了
license_window.html布局,开发者无需自行编写 HTML 即可快速集成授权功能。
注意事项
请确保在调用 show() 之前,网络环境正常,否则 get_app_info 可能会因为无法连接服务器而导致界面显示异常。