我是靠谱客的博主 任性棉花糖,最近开发中收集的这篇文章主要介绍给你的应用加入简易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>
  1. public   class  LicenceManager {  
  2.     private   final   int  MAX_USER =  10 ;  
  3.   
  4.     private  String username =  "" ; //用户名   
  5.     private  String organization =  "" ; //公司名   
  6.     private  String licence; //生成的md5码   
  7.     private   boolean  valid;  
  8.   /**  
  9.      * 当然,如果你有严格的限制的话,你可以加入网卡的唯一码,  
  10.    * 或者更牛B的限制手段!  
  11.      **/   
  12.     @Resource   
  13.     private  UserDAO userDAO;  
  14.     //注入完成之后需要执行的方法上,以执行任何初始化   
  15.     @PostConstruct   
  16.     public   void  validate() {  
  17.         String calcLicence = DigestUtils.md5Hex(username + organization);  
  18.         if  (calcLicence.equals(licence))  
  19.             valid = true ;  
  20.     }  
  21.   
  22.     public  LicenceManager() {  
  23.     }  
  24.     //当然也可以加入对最多用户的限制   
  25.     public   boolean  checkLicence() {  
  26.         if  (valid || userDAO.getCountAll() < MAX_USER)  
  27.             return   true ;  
  28.         return   false ;  
  29.     }  
  30.   
  31.     public   void  setUsername(String username) {  
  32.         this .username = username;  
  33.     }  
  34.   
  35.     public   void  setOrganization(String organization) {  
  36.         this .organization = organization;  
  37.     }  
  38.   
  39.     public   void  setLicence(String licence) {  
  40.         this .licence = licence;  
  41.     }  
  42.   
  43.     public   boolean  isValid() {  
  44.         return  valid;  
  45.     }  
  46. }  
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>
  1. < bean   id = "licenceManager"   class = "com.corticon.dialogs.designer.licence.LicenceManager" >   
  2.        < property   name = "username"   value = "${licence.username}" />   
  3.        < property   name = "organization"   value = "${licence.organization}" />   
  4.        < property   name = "licence"   value = "${licence.licence}" />   
  5.    </ bean >   
  6. < 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>
  1. licence.username = foobar   
  2. licence.organization = foobar .com  
  3. licence.licence = 401303938298f18f397e6b0125159927  

最后

以上就是任性棉花糖为你收集整理的给你的应用加入简易Licence限制的全部内容,希望文章能够帮你解决给你的应用加入简易Licence限制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(29)

评论列表共有 0 条评论

立即
投稿
返回
顶部