uniapp獲取mac地址,ip地址,驗證設備是否合法


最近頂了幾天前端,記錄下知識點,

開發工具是hbuilderX,業務是根據app運行的設備信息來判斷這個設備是否是已知設備庫的設備,既此設備運行這個項目是否合法

思路就是項目啟動時獲取設備mac地址,IP地址,去設備庫查詢,如果沒有就退出app,

第一步,uniapp獲取設備mac地址

//獲取mac地址
                var net = plus.android.importClass("java.net.NetworkInterface")
                var wl0 = net.getByName('wlan0')  
                var macByte = wl0.getHardwareAddress()  
                var str = ''  
                //下面這段代碼來自網絡  
                for (var i = 0; i < macByte.length; i++) {  
                    var tmp = "";  
                    var num = macByte[i];  
                    if (num < 0) {        
                      tmp =(255+num+1).toString(16);  
                    } else {  
                      tmp = num.toString(16);  
                    }  
                    if (tmp.length == 1) {  
                      tmp = "0" + tmp;  
                    }  
                    str += tmp;  
                }  
                console.log(str)

str既是我們的設備mac地址,需要注意的plus對象是在app啟動的時候才監聽,所以h5運行時是拿不到pius對象的,需要運行在手機上才可以,

第二步,拿到設備ip,

做這一步的時候我煩的要命,因為uniapp拿ip是真的難,最后忽然意識到我好像是個后端來着,請求的東西不都在request里面嗎!

所以,前端傳個mac地址完事,在接口里用request拿ip就簡單多了,

import javax.servlet.http.HttpServletRequest;

public
String validaSbip(String macdz,HttpServletRequest request){ //從請求中拿到客戶端的IP地址 String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_CLIENT_IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_X_FORWARDED_FOR"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } System.out.println("IP地址:"+ip);//打印ip地址

然后就回到了我們前端的請求回調里寫我們的驗證就完事了

最后附上驗證不通過時強制關閉APP

let p  = result.data;
                                if(p=="0"){//設備不存在
                                    plus.runtime.quit();  //直接關閉項目
                                }else if(p=="-1"){//地址對,mac地址錯誤,關閉項目
                                    plus.runtime.quit();  //直接關閉項目
                                }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM