• 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();  //直接关闭项目
                                    }
  • 相关阅读:
    scala程序启动时,Could not locate executable nullinwinutils.exe in the Hadoop binaries解决方案
    binlog_format的模式有哪几种?各自的特点是?
    解决IDEA控制台junit不能用Scanner输入问题
    【转】什么是乐观锁,什么是悲观锁
    lyt经典版MySQL基础——流程控制结构
    ambari 2.5.0源码编译安装
    linux(centeros)svn的安装
    机器学习
    算法思想整理
    lucene
  • 原文地址:https://www.cnblogs.com/wl1202/p/12923071.html
Copyright © 2020-2023  润新知