Php 通过本地访问用户';s数据
我正在尝试创建一个像谷歌一样的跨域登录。所以你的youtube、gmail、google+等都有相同的账户。但是,有几个问题我很困惑: 假设我有5个网站,除了他/她的电子邮件、用户名和密码之外,我不想传输任何关于该用户的数据。如果我只有1个用户数据库而不是5个,那么每次我调用用户数据库访问用户的个人资料图片、用户名等时,我是否需要调用远程数据库 我一直在考虑使用远程用户和会话数据库,这样每个子站点都可以访问该数据库,而不是本地用户和会话数据库。但我的应用程序广泛使用表,我担心每次从远程数据库获取数据的性能 我如何才能以一种干净的方式实现这一点,使每个子站点都可以轻松地在本地访问用户信息,并且它们也可以像谷歌及其产品一样共享相同的登录/注销过程?(我在MySQL中使用一个名为Yii的PHP框架)Php 通过本地访问用户';s数据,php,mysql,yii,single-sign-on,Php,Mysql,Yii,Single Sign On,我正在尝试创建一个像谷歌一样的跨域登录。所以你的youtube、gmail、google+等都有相同的账户。但是,有几个问题我很困惑: 假设我有5个网站,除了他/她的电子邮件、用户名和密码之外,我不想传输任何关于该用户的数据。如果我只有1个用户数据库而不是5个,那么每次我调用用户数据库访问用户的个人资料图片、用户名等时,我是否需要调用远程数据库 我一直在考虑使用远程用户和会话数据库,这样每个子站点都可以访问该数据库,而不是本地用户和会话数据库。但我的应用程序广泛使用表,我担心每次从远程数据库获取
我提出了以下解决方案,并将其作为答案发布,如果有任何问题,请提供建议?谢谢你们的帮助
在与一群人交谈之后,下面的方法似乎很有希望
拥有一个包含用户信息的远程数据库(父服务器)听起来是最简单的解决方案 请记住,默认情况下,PHP会话存储在服务器的本地文件系统中。因此,当您使用website-B的会话数据登录website-B时,您不会登录任何其他站点 这就是魔法发生的地方。您需要指示PHP使用远程MySQL数据库来存储会话数据,而不是本地机器的文件系统。一旦建立,这就像魔术一样 我在谷歌上快速搜索了一下,找到了这个网站,上面有为PHP设置MySQL会话表的说明。
您可以编辑UserIdentity类,在每个网站的components文件夹中找到它,并覆盖authenticate()方法以检查OAuth、远程数据库、web服务或任何您认为合适的方法。。。不要担心性能,因为每个会话只执行一次登录…为什么不创建类似的东西 MasterSite.com 使用者
- 身份证
- 用户电子邮件
- 密码
- 名字
- 领域
- 盐
- 身份证
- 用户id
- 站点id
在每个网站上存储用户的数据在一定程度上是可以的,但很快就会变得丑陋。然而,由于现在有基于云的解决方案。。。如果有需要,我认为扩展主站点的数据库或CPU能力不会有太大问题。反对票是关于什么的?@jackhao:很可能是因为你的问题太广泛了。这是无法回答的。使用Yii,这将是一些登录远程服务和会话处理的混合。了解授权和身份验证以及两者之间的区别。@hakre谢谢。我已经编辑了这个问题。我担心的一件事是远程会话处理或我们