zoukankan      html  css  js  c++  java
  • jsonp跨域实现单点登录,跨域传递用户信息以及保存cookie注意事项

    网站A:代码:网站a的login。html页面刷新,使用jsonp方式将信息传递给b.com的login.php中去,只需要在b.com中设置一下跨域以及接收参数,然后存到cookei即可,

    注意:网站A的jsnop传值后,网站B的login.php文件不能放到浏览器中打开刷新查看传递的值,这样会接收不到传递过来的值,需要到另外一个页面打印生成的cookei值来显示,login.php只做逻辑处理,要显示

    效果需要到cookei.php中打印效果

    网站A的login.html

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    <script src="js/jquery.js"></script>
    <script type="text/javascript">
    $(function(){
    
         $.ajax({
             type : 'get',
             url:'http://b.com/login.php',
            data : {
                uid : '333333',
                password : '858888',
            },
            cache :false,
            jsonp: "callback",
            jsonpCallback:"success",
            dataType : 'jsonp',
            success:function(data){
                //alert(data);
            },
            error:function(data){
                //alert('error');
            }        
        });
    });
    </script>
    </head>
    <body>
    <input id='inputtest' value='546' name='inputtest'>
    <div id='testdiv'></div>
    </body>
    </html>

    网站B的login.php页面,本页面只做逻辑处理,千万别用来打印显示任何东西,否则会清空jsonp传过来的值

    <?php
    header("Access-Control-Allow-Origin: *");
    header('Access-Control-Allow-Headers:Authorization');
    header("Access-Control-Allow-Methods: GET, POST, DELETE");
    header("Access-Control-Allow-Credentials: true");
    header("Access-Control-Allow-Headers: Content-Type, X-Requested-With, Cache-Control,Authorization");
    
    file_put_contents('test.txt',$_GET);
    setcookie("user_ticket",$_GET['uid'], time()+3600*24 ,"/");
    $_COOKIE['user_ticket'] = $_GET['uid'];

    网站B的cookei.php页面,本页面用来显示login.php页面中生成的cookie的值,用来查看效果

    <?php
    
    print_r( $_COOKIE);

    自此jsonp跨域传值完成,此功能可用来进行单点登录,

    用户1在网站A登陆后,在cookie中会有本用户的sessionid来判别身份,将sesion信息存在redis中去,并将本用户信息存在cookei中或者在登录成功页面写两个隐藏域

    吧用户信息放到隐藏域里面,使用jsonp将用户信息,发送给网站B,

    网站B使用上述方法,获取到用户1的信息后,存到cookei中去,然后将cookei中的用户信息去与redis中信息比对,看看是否登录过期,以及安全验证,

    如果验证通过,将用户1信息,存到网站B的session或者cookei中去,实现单点登录

  • 相关阅读:
    bzoj5137 [Usaco2017 Dec]Standing Out from the Herd
    bzoj2434 [Noi2011]阿狸的打字机
    【20181024T2】小C的序列【GCD性质+链表】
    【20181024T3】小C的宿舍【分治】
    【20181024T1】小C的数组【二分+dp】
    【20181023T2】行星通道计划【二维BIT】
    【20181023T1】战争【反向并查集】
    【20181020T1】蛋糕
    【20181019T2】硬币【矩阵快速幂优化DP】
    【20181019T3】比特战争【最小生成树思想】
  • 原文地址:https://www.cnblogs.com/yszr/p/10466661.html
Copyright © 2011-2022 走看看