如何使用nodejs开发收费软件

1,176 阅读2分钟

先说结论:

1.使用类似pkg等工具对代码进行打包成可执行程序,防止代码泄露。

2.使用授权码,只有购买了授权认证的用户才可以运行程序。

如何引用授权机制。

原理其实也很简单,使用 node-machine-id 包 获取机器码。通过机器码进行授权管理。

流程大概是这样的,

用户下载你的应用程序,初次运行时检测到没有授权文件时 

把当前电脑的机器码生成到一个文件内。并给出用户提示,拿注册码找管理员换授权码。

然后你封装一个 注册码转授权文件的程序。

运行后会根据一个固定的规则把 用户的机器码转化为一个 授权码。(并进行收费^_^)

用户获取到授权码时,再次服务启动时检测到授权码,并根据固定规则对当前授权码进行验证。

验证通过后服务正常运行。

下面放一下关键代码:

获取用户机器码

const {machineId, machineIdSync} = require('node-machine-id');
const id = machineIdSync({original: true} );

根据机器码生成授权码

const register = fs.readFileSync('./注册码.txt');
const KEY = "asdf/asd+Z3sMzILETs/asd/asd/asd/Z/qGf3Q=="; // 授权码混淆KEY
const md5 = require('md5-node');
const obj = { license:md5(register+KEY) } 
fs.writeFile(path.join( process.cwd(), "./license.json"), JSON.stringify(obj), function (error) {  if (error) {    console.log(error);  } })

这里的生成规则比较简单,只是简单的对 机器码加个字符串然后进行MD5加密。这块可以自由定义。

验证授权码

const license  = fs.readFileSync('./config/license.json').license;
if( license == md5(machineIdSync({original: true})+KEY) ){ 
  return true;
}

另外看一下pkg打包使用方式。

npm install pkg --save-dev

windows打包命令:

pkg -t win package.json -o E:\mogenshixiong\摩根师兄

macos打包命令:

pkg -t macos package.json -o E:\mogenshixiong\摩根师兄

package.json配置中添加如下配置

{
    "main": "server.js",    "pkg":{
        "scripts": [      
            "./app/base/**/*.js",      
            "./service.js"    
        ],    
        "assets": [      
            "views/**/*"    
        ]
    }
}

assets路径指向前端代码文件.这里的配置意思是不把静态文件进行打码,这样可以提高应用请求静态资源的速度。

根据我自己的实际项目经验,完全可以满足需求。可以开发一些收费应用,定制应用,或者封装一些 仅限自己可以使用的应用。

大家可以看一下我的个人github的开源项目fastApp 就是使用的这套思路,

fastApp 

封装了常用的license授权验证,session持久化,用户登录注册,权限控制,角色分配,菜单管理等常用功能。
集成常用的cms,wms等常用系统功能。
开发者可以在此基础上非常快速的实现自己的业务。

并支持把应用打包成exe执行程序,
数据库使用轻量级的sqlite,使用pkg直接打包后的程序会自动打包node环境,

不依赖任何其他配置

目前还在持续的完善,有兴趣的同学可以给个star支持一下

欢迎大家留言,讨论。