gpt4 book ai didi

angularjs - Angular JS 中的 IP 白名单

转载 作者:行者123 更新时间:2023-12-01 13:30:25 25 4
gpt4 key购买 nike

我正在使用 AngularJS v1.2.32。

我想为合法系统提供基于 IP 的白名单。我已经搜索但找到了使用第三方 json 应用程序的示例。

需要在 JavaScript 、 angularjs 中获取客户端 IP 并限制对其他用户的访问。

非常感谢您的帮助。

最佳答案

Firefox 和 Chrome 已经实现了 WebRTC,允许向 STUN 服务器发出请求,这些请求将为用户返回本地和公共(public) IP 地址。这些请求结果可用于 javascript,因此您现在可以在 javascript 中获取用户的本地和公共(public) IP 地址。这个演示是一个示例实现。
更多

  • https://github.com/diafygi/webrtc-ips
  • How to get client's IP address using JavaScript only?


  • //get the IP addresses associated with an account
    function getIPs(callback){
    var ip_dups = {};

    //compatibility for firefox and chrome
    var RTCPeerConnection = window.RTCPeerConnection
    || window.mozRTCPeerConnection
    || window.webkitRTCPeerConnection;
    var useWebKit = !!window.webkitRTCPeerConnection;

    //bypass naive webrtc blocking using an iframe
    if(!RTCPeerConnection){
    //NOTE: you need to have an iframe in the page right above the script tag
    //
    //<iframe id="iframe" sandbox="allow-same-origin" style="display: none"></iframe>
    //<script>...getIPs called in here...
    //
    var win = iframe.contentWindow;
    RTCPeerConnection = win.RTCPeerConnection
    || win.mozRTCPeerConnection
    || win.webkitRTCPeerConnection;
    useWebKit = !!win.webkitRTCPeerConnection;
    }

    //minimal requirements for data connection
    var mediaConstraints = {
    optional: [{RtpDataChannels: true}]
    };

    var servers = {iceServers: [{urls: "stun:stun.services.mozilla.com"}]};

    //construct a new RTCPeerConnection
    var pc = new RTCPeerConnection(servers, mediaConstraints);

    function handleCandidate(candidate){
    //match just the IP address
    var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/
    var ip_addr = ip_regex.exec(candidate)[1];

    //remove duplicates
    if(ip_dups[ip_addr] === undefined)
    callback(ip_addr);

    ip_dups[ip_addr] = true;
    }

    //listen for candidate events
    pc.onicecandidate = function(ice){

    //skip non-candidate events
    if(ice.candidate)
    handleCandidate(ice.candidate.candidate);
    };

    //create a bogus data channel
    pc.createDataChannel("");

    //create an offer sdp
    pc.createOffer(function(result){

    //trigger the stun server request
    pc.setLocalDescription(result, function(){}, function(){});

    }, function(){});

    //wait for a while to let everything done
    setTimeout(function(){
    //read candidate info from local description
    var lines = pc.localDescription.sdp.split('\n');

    lines.forEach(function(line){
    if(line.indexOf('a=candidate:') === 0)
    handleCandidate(line);
    });
    }, 1000);
    }

    //Test: Print the IP addresses into the console
    getIPs(function(ip){console.log(ip);});

    关于angularjs - Angular JS 中的 IP 白名单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46238294/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com