ucenter单点登录
ucenter单点登录原理是跨域设置用户信息。
实现的关键:
ucenter文件与应用的融合
融合方式包括模块,或第三方库,如果将ucenter做成自己应用的模块,建议对ucenter中client.php中的方法进行封装处理。如果是第三方库,可以在应用的登录、登出时,直接调用相关函数,但是前提是引入配置文件(这里是ucenter中的配置信息)和client.php。ucenter文件的调用
核心文件包括uc.php, client.php,建议深度阅读client.php文件中的相关函数。创建应用
本地或服务器安装ucenter,然后创始人登录后,在左侧菜单选择<应用管理>中添加新应用(自定义),配置相关信息(如名称、url、秘钥、类型、接口文件类型,开启同步登录),提交后创建成功的同时,会在底部生成相关的配置信息(重要),需要你配置到你的应用中,否则通信失败。当通信成功后,你需要做的就是在应用的登录、登出逻辑中添加ucenter的注册、登录逻辑即可。这样就实现了该功能,效果就是当用户登录应用时,该用户也会同步登录ucenter。在ucenter中的用户管理菜单下,看到该用户。
- 配置文件分析
//注意,如果是应用和ucenter都在一个服务器上,那么对应的值是mysql, 如果不在,值是NULL
define("UC_CONNECT", "NULL");
//同一个服务器可用localhost, 不在,值为ucenter服务器ip
define("UC_DBHOST", "ip");
//mysql用户名
define("UC_DBUSER", "root");
//mysql密码
define("UC_DBPW", "xxx");
//ucenter数据库名称
define("UC_DBNAME", "xxx");
//ucenter数据库编码
define("UC_DBCHARSET", "gbk");
//ucenter数据库表前缀
define("UC_DBTABLEPRE", "`xxx`.uc_");
//数据库持久化连接,no
define("UC_DBCONNECT", "0");
//应用与ucenter通信密钥
define("UC_KEY", "123456");
define("UC_API", "http://域名/ucenter");
define("UC_CHARSET", "gbk");
define("UC_IP", "");
//在ucenter中创建的应用的id
define("UC_APPID", "2");
define("UC_PPP", "20");
当然通信失败有必要原因罗列一下:
- UC_APPID不同
- UC_KEY不同
- ucenter与应用不在同一服务器,将配置信息设置如下:
define("UC_CONNECT", "NULL");
define("UC_DBHOST", "ip");
大致就讲这些吧,client中函数自己去看吧,本人是拿yii2.0与ucenter进行结合的,希望对用到这些的朋友有用!
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
