• ucenter 通信原理个人总结


     

    1. 用户登陆discuz,调用on_login() , on_login ()里调用了userlogin() 验证用户信息,正确的话,调用uc_user_synlogin(),然后调用uc_api_post('user', 'synlogin', array('uid'=>$uid)),向uc_server/index.php 传输数据,model为user,action为synlogin,然后调用uc_server/control/user.php 里的onsynlogin方法,通过foreach循环,以javascript的方式通知uc应用列表中开启同步登陆的应用进行同步登录;discuz自身的ucenter通信到此结束;

    2. discuz外的应用api/uc.php接收通知并处理get过来的数据,并在函数synlogin(位于uc.php中)通过函数authcode加密数据,用函数wp_set_auth_cookie设置cookie。各个应用用对应的密钥解码上面设置的cookie,得到用户id等数据;通过这个值来判断用户是否经过其它应用登录过,从而让用户可以自动登陆。




    discuz:


    用户登陆

    -> /member.php

    -> /source/module/member/member_logging.php

    -> /source/class/class_member.php(on_login )

    -> /uc_client/client.php(uc_user_synlogin

    -> uc_api_post('user', 'synlogin', array('uid'=>$uid)) )

    -> uc_server/index.php

    -> uc_server/control/user.php(onsynlogin)

    -> 以javascript 方式通知uc应用列表中开启同步登陆的应用进行同步登录


    wordpress:


    get方式接受ucenter传过来的数据

    -> /wp-content/plugins/ucenter-integration/api/uc.php (synlogin)

    -> 通过函数authcode加密数据,用函数wp_set_auth_cookie设置cookie

    -> 各个应用用对应的密钥解码上面设置的cookie,得到用户id等数据;通过这个值来判断用户是否经过其它应用登录过,从而让用户可以自动登陆。

     

  • 相关阅读:
    windows上phpstudy配置memcache
    获取全站详情链接,并输出为txt文本
    Linux 宝塔面板免费版开启 waf 防火墙的方法
    where条件多种情况
    网站加https
    git常用命令
    缓存
    Stream转换成byte[] 、将 byte[] 转成 Stream 、Stream和文件的转换、从文件读取 Stream
    C#发送邮件
    Ref和Out的区别
  • 原文地址:https://www.cnblogs.com/kyee/p/3889462.html
Copyright © 2020-2023  润新知