mod_perl 基本身份验证,$r->user() 失败
我们有一个使用 mod_perl2
和 mason 的项目。
我面临的问题是使用 .htaccess 中的 apache basic auth 对用户进行身份验证。
在cgi环境中我可以从$ENV{REMOTE_USER}
获取它
在mod_perl中我应该能够使用$r->user()
获取它,不幸的是返回undef 。
$r->connection->user()
也没有运气
我也尝试过 CGI::Apache2::Wrapper
、$cgi-> ;remote_user()
和 $cgi->user_name()
再次没有运气。
它工作的唯一方法是调用 $r->headers_in->get('Authorization')
,它返回类似以下内容:'Basic dGhlZHJpdmVyaXM6eGVudXByZQ==
'
任何想法为什么$r->user()
失败? 谢谢
We have a project that uses mod_perl2
and mason.
The problem I'm facing is getting the user authenticated using apache basic auth, from .htaccess .
In cgi enviroment I can get that from $ENV{REMOTE_USER}
In mod_perl I should be able to get it using $r->user()
, which unfortunately returns undef.
Also no luck with $r->connection->user()
I've also tried CGI::Apache2::Wrapper
, $cgi->remote_user()
and $cgi->user_name()
again with no luck.
The only way it works is calling $r->headers_in->get('Authorization')
which returns something like: 'Basic dGhlZHJpdmVyaXM6eGVudXByZQ==
'
Any ideea why $r->user()
fails?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我怀疑
$r->user()
仅在 mod_perl2 进行身份验证时设置,而不是在 apache 进行身份验证时设置。尝试
在对
$r->user()
的调用上方添加:。这可能会触发模块解码授权标头。或者,您可以手动对授权标头进行 base64 dcode:
I suspect that
$r->user()
is only set when mod_perl2 does the authentication, not when apache does it.Try adding:
above the call to
$r->user()
. This might trigger the module to decode the Authorization header.or, you could manually base64 dcode the Authorization header: