我是
靠谱客的博主
任性棉花糖,最近开发中收集的这篇文章主要介绍
给你的应用加入简易Licence限制,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
有的时候,客户会提出这样的需求,他们的应用能不能当产品一样的出售呀,如果能够保证每一个买家有一个唯一的限制的话,这将是一个不错的想法.
为了能够达到这个目的,我就想了一个很弱智的实现方案.就是在应用启动时加入一些参数,并做一个检验,如果检验失败后就启动失败,这样的话,这个应用就不能正常使用.
好了.就按照这个思路来做一个实现,然后再做扩展.因为我们使用Spring的MVC框架,我就想把它加载到Spring的启动配置文件当中. 实现如下,一共有三个个文件,一个JAVA文件,一个是加入到Spring配置文件当中的片段.另外是一个Licence.properites文件.
Java文件:
Java代码 <embed type="application/x-shockwave-flash" width="14" height="15" src="http://www.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=public%20class%20LicenceManager%20%7B%0A%20%20%20%20private%20final%20int%20MAX_USER%20%3D%2010%3B%0A%0A%20%20%20%20private%20String%20username%20%3D%20%22%22%3B%2F%2F%E7%94%A8%E6%88%B7%E5%90%8D%0A%20%20%20%20private%20String%20organization%20%3D%20%22%22%3B%2F%2F%E5%85%AC%E5%8F%B8%E5%90%8D%0A%20%20%20%20private%20String%20licence%3B%2F%2F%E7%94%9F%E6%88%90%E7%9A%84md5%E7%A0%81%0A%20%20%20%20private%20boolean%20valid%3B%0A%E3%80%80%E3%80%80%2F**%0A%20%20%20%20%20*%20%E5%BD%93%E7%84%B6%EF%BC%8C%E5%A6%82%E6%9E%9C%E4%BD%A0%E6%9C%89%E4%B8%A5%E6%A0%BC%E7%9A%84%E9%99%90%E5%88%B6%E7%9A%84%E8%AF%9D%EF%BC%8C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E5%8A%A0%E5%85%A5%E7%BD%91%E5%8D%A1%E7%9A%84%E5%94%AF%E4%B8%80%E7%A0%81%EF%BC%8C%0A%E3%80%80%E3%80%80%20*%20%E6%88%96%E8%80%85%E6%9B%B4%E7%89%9BB%E7%9A%84%E9%99%90%E5%88%B6%E6%89%8B%E6%AE%B5!%0A%20%20%20%20%20**%2F%0A%20%20%20%20%40Resource%0A%20%20%20%20private%20UserDAO%20userDAO%3B%0A%20%20%20%20%2F%2F%E6%B3%A8%E5%85%A5%E5%AE%8C%E6%88%90%E4%B9%8B%E5%90%8E%E9%9C%80%E8%A6%81%E6%89%A7%E8%A1%8C%E7%9A%84%E6%96%B9%E6%B3%95%E4%B8%8A%EF%BC%8C%E4%BB%A5%E6%89%A7%E8%A1%8C%E4%BB%BB%E4%BD%95%E5%88%9D%E5%A7%8B%E5%8C%96%0A%20%20%20%20%40PostConstruct%0A%20%20%20%20public%20void%20validate()%20%7B%0A%20%20%20%20%20%20%20%20String%20calcLicence%20%3D%20DigestUtils.md5Hex(username%20%2B%20organization)%3B%0A%20%20%20%20%20%20%20%20if%20(calcLicence.equals(licence))%0A%20%20%20%20%20%20%20%20%20%20%20%20valid%20%3D%20true%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20public%20LicenceManager()%20%7B%0A%20%20%20%20%7D%0A%20%20%20%20%2F%2F%E5%BD%93%E7%84%B6%E4%B9%9F%E5%8F%AF%E4%BB%A5%E5%8A%A0%E5%85%A5%E5%AF%B9%E6%9C%80%E5%A4%9A%E7%94%A8%E6%88%B7%E7%9A%84%E9%99%90%E5%88%B6%0A%20%20%20%20public%20boolean%20checkLicence()%20%7B%0A%20%20%20%20%20%20%20%20if%20(valid%20%7C%7C%20userDAO.getCountAll()%20%3C%20MAX_USER)%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20public%20void%20setUsername(String%20username)%20%7B%0A%20%20%20%20%20%20%20%20this.username%20%3D%20username%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20public%20void%20setOrganization(String%20organization)%20%7B%0A%20%20%20%20%20%20%20%20this.organization%20%3D%20organization%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20public%20void%20setLicence(String%20licence)%20%7B%0A%20%20%20%20%20%20%20%20this.licence%20%3D%20licence%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20public%20boolean%20isValid()%20%7B%0A%20%20%20%20%20%20%20%20return%20valid%3B%0A%20%20%20%20%7D%0A%7D" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
- public class LicenceManager {
- private final int MAX_USER = 10 ;
-
- private String username = "" ;
- private String organization = "" ;
- private String licence;
- private boolean valid;
-
-
-
-
- @Resource
- private UserDAO userDAO;
-
- @PostConstruct
- public void validate() {
- String calcLicence = DigestUtils.md5Hex(username + organization);
- if (calcLicence.equals(licence))
- valid = true ;
- }
-
- public LicenceManager() {
- }
-
- public boolean checkLicence() {
- if (valid || userDAO.getCountAll() < MAX_USER)
- return true ;
- return false ;
- }
-
- public void setUsername(String username) {
- this .username = username;
- }
-
- public void setOrganization(String organization) {
- this .organization = organization;
- }
-
- public void setLicence(String licence) {
- this .licence = licence;
- }
-
- public boolean isValid() {
- return valid;
- }
- }
public class LicenceManager {
private final int MAX_USER = 10;
private String username = "";//用户名
private String organization = "";//公司名
private String licence;//生成的md5码
private boolean valid;
/**
* 当然,如果你有严格的限制的话,你可以加入网卡的唯一码,
* 或者更牛B的限制手段!
**/
@Resource
private UserDAO userDAO;
//注入完成之后需要执行的方法上,以执行任何初始化
@PostConstruct
public void validate() {
String calcLicence = DigestUtils.md5Hex(username + organization);
if (calcLicence.equals(licence))
valid = true;
}
public LicenceManager() {
}
//当然也可以加入对最多用户的限制
public boolean checkLicence() {
if (valid || userDAO.getCountAll() < MAX_USER)
return true;
return false;
}
public void setUsername(String username) {
this.username = username;
}
public void setOrganization(String organization) {
this.organization = organization;
}
public void setLicence(String licence) {
this.licence = licence;
}
public boolean isValid() {
return valid;
}
}
Spring的配置文件:
Xml代码 <embed type="application/x-shockwave-flash" width="14" height="15" src="http://www.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=%20%3Cbean%20id%3D%22licenceManager%22%20class%3D%22com.corticon.dialogs.designer.licence.LicenceManager%22%3E%0A%20%20%20%20%20%20%20%20%3Cproperty%20name%3D%22username%22%20value%3D%22%24%7Blicence.username%7D%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Cproperty%20name%3D%22organization%22%20value%3D%22%24%7Blicence.organization%7D%22%2F%3E%0A%20%20%20%20%20%20%20%20%3Cproperty%20name%3D%22licence%22%20value%3D%22%24%7Blicence.licence%7D%22%2F%3E%0A%20%20%20%20%3C%2Fbean%3E%0A%E3%80%80%3Ccontext%3Aproperty-placeholder%20location%3D%22classpath%3ALicence.properties%22%20%2F%3E" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
- < bean id = "licenceManager" class = "com.corticon.dialogs.designer.licence.LicenceManager" >
- < property name = "username" value = "${licence.username}" />
- < property name = "organization" value = "${licence.organization}" />
- < property name = "licence" value = "${licence.licence}" />
- </ bean >
- < context:property-placeholder location = "classpath:Licence.properties" />
<bean id="licenceManager" class="com.corticon.dialogs.designer.licence.LicenceManager">
<property name="username" value="${licence.username}"/>
<property name="organization" value="${licence.organization}"/>
<property name="licence" value="${licence.licence}"/>
</bean>
<context:property-placeholder location="classpath:Licence.properties" />
另外Licence.properites示例如下:
Xml代码 <embed type="application/x-shockwave-flash" width="14" height="15" src="http://www.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=licence.username%3Dfoobar%0Alicence.organization%3Dfoobar.com%0Alicence.licence%3D401303938298f18f397e6b0125159927" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
- licence.username = foobar
- licence.organization = foobar .com
- licence.licence = 401303938298f18f397e6b0125159927
最后
以上就是任性棉花糖为你收集整理的给你的应用加入简易Licence限制的全部内容,希望文章能够帮你解决给你的应用加入简易Licence限制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复