gpt4 book ai didi

wordpress - WordPress和CakePHP之间的单点登录(SSO)

转载 作者:行者123 更新时间:2023-12-04 03:52:40 29 4
gpt4 key购买 nike

我有一个现有的Wordpress网站。计划是使用cakePHP框架重建站点。由于时间限制,我想一次替换一个Wordpress网站的各个部分。这意味着两个应用程序将并排运行一段时间。我需要使用Wordpress提供的授权来控制对cakePHP应用程序的访问。我不确定执行此操作的最佳方法。我已经看到很多类似的问题,但是我还没有找到一个明确的解决方案。

我正在考虑两种方法:

方案A:

  • 配置Cake以查找Wordpress的授权cookie。
  • 配置Cake查看Wordpress的数据库。
  • 借用一些Wordpress的授权逻辑来教Cake的Auth组件如何对WP用户进行身份验证。

  • 方案B:
  • 在我的Wordpress网站上设置了一个授权API。
  • 在cake中设置了单独的身份验证组件。
  • 当用户点击cake应用程序中的 protected 页面,然后手动登录该用户时,
  • ping WP端点。 (这将创建第二组身份验证cookie)

  • 这些听起来像是正确的方法吗?有一个更好的方法吗?

    有用的引用文献: Article about Cake session handlingCake Auth component documentationCake Auth tutorialbrief overview of WP authorizationa more in depth look at wordpress authorization

    更新
    我们已经开始进行此工作,而且看起来似乎可以工作,但是其中涉及一个非常棘手的方面,涉及需要 its own question的密码散列。如果您正在关注此主题,则可能需要看看。

    最佳答案

    我曾经有过类似的情况:几个月前的Cross framework authentication zend + codeigniter ...

    无论如何,这是我更喜欢的:

  • 在我的Wordpress网站上设置了一个授权API。
  • 在cake中设置了单独的身份验证组件。
  • 当用户点击cake应用程序中的 protected 页面,然后手动登录该用户时,
  • ping WP端点。 (这将创建第二组身份验证cookie)

  • 在这里,我建议可以做些微的改动。

    确保您具有SSO token 系统。与之类似,当用户登录Wordpress时,设置另一个具有 token 的cookie: token 将是用户名+密码(哈希)+ secret key ,在Wordpress和CakePHP之间将是相同的。在任何一个站点上,查找cookie并手动登录用户或仅执行数据库查找。散列对于该Cookie很重要!
    但是,如果站点使用不同的域,则可能需要重新制定策略:

    我曾经有过不同的领域。在登录页面或未经授权的页面上,我将对其他网站执行ping操作,并打开其登录框。在另一个网站上,如果用户已登录,他们将获得登录页面,并且如果请求URI发送了 token ,我们将执行正常操作,并将授权 token 返回此(当前)域。

    简单来说:

    站点A = WordPress和站点B = CakePHP

    站点B到达需要授权的页面,然后对站点A进行ping操作(当您执行“使用Facebook登录”时发生),这将通过 token (私钥)和REQUEST_URI进行请求,该请求将成为SSO的一部分站点A上的验证表,如果有人已经登录,则站点A将返回(通过POST) token ,该 token 还将通过站点B的(私钥)解密并登录用户。B和A的私钥会一样。

    希望这是可以理解的。

    问题? :)

    在评论中回答您的问题:

    理想情况下,为什么我们使用SSO?由于许多限制,我们使用它。例如:您有一个数据库,说...一百万行有超过一千个表,您已经需要在您庞大的应用程序上添加一个模块...因此,您将使用另一个数据库... SSO将返回用户信息,可以进一步复制。例如,当您单击“使用Facebook登录”时,它将返回请求的信息,例如电子邮件地址,用户名或个人资料图片。可以将其进一步添加到我们的数据库中...强烈建议保留其他数据库:)

    对于您的第二个和第三个问题: 这两个站点是否应该引用数据库中的同一用户表?除非您使用相同的数据,否则建议使用不同的数据库。或者说更改软件平台。

    我是否应该将特定于站点的用户行复制到每个应用程序的单独用户表中? 是,应该自动发生。一旦您在主站点上注册,什么都不会发生,一旦您已经登录然后转到站点B,就应该发生任何事情。登录后,始终可以请求用户信息:)这样,新站点将处于事件状态用户! 2只鸟?

    不要让(使自己)复杂化如何工作,而要专注于如何在短期内可以实现的目标。 SSO-已登录-受限页面-查找登录-要么登录-如果已经登录-获取用户信息-如果用户信息存在-通过辅助站点登录或设置新的用户信息。完毕!

    我们开发人员喜欢流程图!不是吗我刚刚创建了一个:

    进一步的答案:

    “获取用户信息”阶段是否意味着我们从已登录的站点获取用户信息,然后在另一个站点中自动创建一个新用户(行)?

    理想情况下,您会在用户“允许”使用其信息之前,征求用户的许可,但这会改变您的隐私政策的方式。

    换句话说,一个站点处理所有注册/用户创建,而另一个站点仅等待该用户出现并触发自动创建。还是在用户在一个站点上注册时,两个数据库都插入了一个用户行?

    一个站点处理所有注册/用户创建,另一个站点仅等待该用户出现并触发自动创建。 可以同时使用。在您的网站上注册,以及基于触发器的自动创建。取决于您的策略。 还是在用户在一个站点上注册时,两个数据库都插入了用户行? 这将是一种可怕的做法!它将扼杀SSO的动机。 SSO的目的是创建一个可供用户使用的auth系列,这样他们就不必时不时地为不同的网站注册。一次仅更新一个数据库,而在需要时更新其他数据库:)

    问题? :)

    关于wordpress - WordPress和CakePHP之间的单点登录(SSO),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15188261/

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