2017-06-22 53 views
2

我想构建一个桌面应用程序并能够发布产品密钥或序列号。在用户使用该应用程序之前,他将被要求输入产品密钥/序列号。是否可以为我的电子应用程序创建产品密钥?

时,他们提供像XXXX-XXXX-XXXX-XXXX

的想法我已经是每个设备似乎比帐户更专业的销售基础上的许可证,并提供产品密钥的应用程序(用户名键与Microsoft Office相似和密码)。

所以我的问题是:

1)是否有可能与electron做到这一点?

2)你能告诉我,我应该去的序列号(如果是可行的)或账户?还是有更好的选择?

3)如果你回答了第二个问题。请说明原因?

回答

4

对于你的第一个问题,是的,你绝对可以实现产品密钥授权Electron应用程序(我已经做了几次我自己)。对于第二个问题,我鼓励您拥有包含相关许可证的用户帐户,例如用户2可以做X和Y,而用户2只能做X.

那么为什么 - 提供用户帐户有什么优势?

首先,它不需要你和你的客户来跟踪许可证密钥(一个巨大的烦恼,特别是当他们失去它们时),因为它们都可以在用户的​​幕后处理帐户。他们所要做的就是登录(就像他们习惯做的那样!),然后您可以查询与其用户帐户关联的所有许可证。

也许最重要的是,通过实施用户帐户,您可以为您的客户提供自助服务许可证激活!即由于所有的许可证(注意多个每个用户有多个许可证的可能性)现在与单个用户帐户相关联,您可能会提示他们例如当他们在未识别的机器上启动您的应用程序时购买新的许可证,或者轻松提供产品附加功能以获取附加功能。

如果你不是特别热衷于编写自己的授权系统,我是一个名为Keygen的软件授权API的创始人,它可以帮助您快速启动并运行,而无需托管和编写您的自己的授权服务器我专注于开发独立开发人员的Keygen,尤其是构建桌面应用程序的开发人员。我在编写第一个Electron应用程序之后创建了这项服务,并意识到(当时令人惊讶)没有此类服务,这对我来说非常令人沮丧。所以我为自己和其他开发者写了一篇。由于Keygen只是一个API(即没有需要与应用程序打包在一起的软件),Keygen可以用于任何编程语言(所以我们不仅限于JavaScript)。以其最简单的形式,例如没有用户帐户,只有许可证密钥,验证与凯基许可证密钥是创下了单一的API端点一样容易,

curl -X POST https://api.keygen.sh/v1/accounts/dc7ac1f74ce0/licenses/actions/validate-key \ 
    -H 'Content-Type: application/vnd.api+json' \ 
    -H 'Accept: application/vnd.api+json' \ 
    -d '{ 
     "meta": { 
      "key": "B8A5-91D7-CB9A-DAE4-4F6E-1128" 
     } 
     }' 

就像我除了上面提到的,许可证管理,凯基还提供API端点管理用户帐户(这也是我推荐的,因为它是一个更好的用户体验),允许您将许可证与用户关联起来,并跟踪他们使用您的应用的计算机,如果您希望实施多个许可证,用户(如功能许可证),机器锁定许可证,或者您只想知道每个用户拥有多少台机器。

我希望能回答你的问题并给你一些见解。很高兴回答您的任何其他问题,因为我现在为Electron应用程序实施了几次许可。 :)

+0

+1,如果用户不通过Keygen API使用互联网发布初始一次性许可验证,我该如何离线维护许可? – ajay

+1

@ajay @ajay当用户第一次输入许可证密钥时,您可以将其存储或某种类型的本地存储中的表示,然后仅在本地存储中不存在密钥时才提示输入许可证密钥。如果他们的密钥最终到期,那么在用户访问互联网时将过期存储在本地存储器中或重新验证密钥(例如,在每次启动时)是一个好主意。 – ezekg

+0

谢谢,@ezekg。您是否也可以指导如何防止部署软件包中的许可证验证/逻辑JavaScript代码发生更改? – ajay

1
  1. 是的,但是关于软件注册机制,它很硬,它也需要很多测试。
  2. 如果90%的用户可以访问互联网,您应该使用用户帐户或一些OAUTH 2.0即插即用软件(登录facebook/gmail/whatever)
  3. 我使用加密技术从头开始构建软件许可体系结构和FS模块,这是一个相当的旅程(年)!

不建议从头开始为您的软件创建一个良好的注册机制,因为源代码相对暴露,电子使其变得更加困难。这就是说,如果你真的想这样做,bcrypt擅长这个(哈希),你需要一个唯一的用户标识符来哈希,你还需要某种类型的持久性(最好是一个文件),你可以在其中存储用户许可证,并且您需要通过散列哈希来隐藏您用于哈希的盐......或将其小部分存储在单独的文件中。

这对许可证来说是一个很好的起点,但它远未得到充分保证。

希望它能帮助!

+0

谢谢你的回答。阅读你的答案后,我有几个问题。 1)什么是龙? 2)我想实施一个机构的应用程序,我将为用户提供用户名和密码,因此社交网络登录不是我正在寻找的。在此之后,如果他们能够访问互联网,是否更愿意提供用户帐户? –

+0

我很抱歉我迟到的回应(搬家)0_o –

+0

是的,忘记软件许可和登录借助图书馆的帐户,它会为您节省一些时间。 – Sam

相关问题