• 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();  //直接关闭项目
                                    }
  • 相关阅读:
    关于课程设计、毕业设计的一些总结与思考
    分享一个Panda C-60 维修心得
    未能加载文件或程序集“SuperMap.Data.dll”
    VS2017环境下安装AO10.2的方法
    SQL Server连接错误1326
    VMWare虚拟机中CPU过高的问题
    Apktool编译找不到“keyboardNavigationCluster”
    Aspose.Cells设置单元格格式
    谷歌Chrome浏览器无法安装插件的解决方法
    Global Mapper如何加载在线地图
  • 原文地址:https://www.cnblogs.com/wl1202/p/12923071.html
Copyright © 2020-2023  润新知