2011-09-09 8 views
0

mod_perl2とmasonを使用するプロジェクトがあります。

私が直面している問題は、ユーザーが.htaccessからApacheの基本認証を使用して認証されることです。

CGIの環境には、私はmod_perlので$ENV{REMOTE_USER}

から、私は残念ながらundefを返します$r->user()を使用して、それを得ることができる必要がありますことを得ることができます。

また、私はまた、運に再びCGI::Apache2::Wrapper$cgi->remote_user()$cgi->user_name()を試してみた$r->connection->user()

と運。

それが動作する唯一の方法は何かを返した$r->headers_in->get('Authorization')を呼んでいる:「Basic dGhlZHJpdmVyaXM6eGVudXByZQ==

$r->user()が失敗した理由をどれideeaを? ありがとう

+0

あなたは 'のApache2を持っています:: RequestRec'ロードされましたか? – friedo

+0

遅れて申し訳ありません、はいApache2 :: RequestRecが読み込まれています – satmovi

答えて

0

$r->user()は、mod_perl2が認証を行うときにのみ設定されていると思われます。

my ($res, $sent_pw) = $r->get_basic_auth_pw; 

$r->user()への呼び出しの上:追加

してみてください。これにより、Authorizationヘッダーをデコードするモジュールがトリガーされることがあります。

か、あなたは可能性があり、手動では、AuthorizationヘッダーDCODE base64で:

my $auth = $r->headers_in->get('Authorization'); 
my $username = (split(/:/,APR::Base64::decode((split(/ /,$auth))[1])))[0];