【问题标题】:How to make REMOTE_USER stick when set in PHP?在 PHP 中设置时如何使 REMOTE_USER 保持不变?
【发布时间】:2012-03-14 21:06:34
【问题描述】:

我正在做一些用 PHP 编写的自定义身份验证,需要设置 REMOTE_USER 变量,并使其保持不变,以便在 Web 服务器上的其他应用程序中使用。

我能够设置REMOTE_USER 变量并将其显示在$_SERVER 中,并使用apache_setenv(),但第二页中的phpinfo() 调用不会列出正在设置的变量。

Web 服务器是 Apache 2 和 PHP 5。有什么想法吗?

附录:一个示例情况是,我根据数据库表对用户进行身份验证,并为他们设置 REMOTE_USER 变量,然后通过代理将它们发送到第二台服务器,沿代理传递 REMOTE_USER,如此处所述一个系统:

http://docs.splunk.com/Documentation/Splunk/4.3.1/Admin/Usesinglesign-onwithSplunk

【问题讨论】:

    标签: php apache


    【解决方案1】:

    不要使用$_SERVER。该变量是从托管 PHP 的服务器中填充的,不是您应该搞乱的。

    你要找的是$_SESSION

    http://php.net/manual/en/features.sessions.php

    【讨论】:

    • 谢谢,布拉德,但我认为这不是我想要的。我需要设置 REMOTE_USER 以在 PHP 之外使用,甚至通过 AJP 连接等将其作为标头传递。我开始担心我可能需要为此与 Apache 进行更深入的集成。你做过这个,具体吗? REMOTE_USER 应该出现在 phpinfo() 中,而不是在使用 $_SESSION 变量时。
    • @Rob,这不是在 PHP 级别完成的。您需要的是一个单独的 Apache 身份验证插件。您的代理建议也有效,但非常混乱。如果您的其他应用程序使用 PHP,只需正确执行此操作并在每个应用程序中设置某种单点登录。
    • @Rob,不,你来对地方了。您只需要发布一个新问题。不过,在您这样做之前,我将开始研究各种可用的单点登录选项。 OpenID 等。有很多选择。如果您想走受虐路线,请编写一个 Apache mod。 httpd.apache.org/docs/2.0/developer
    猜你喜欢
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    • 2019-08-27
    • 1970-01-01
    相关资源
    最近更新 更多