2017-05-15 17 views
0

自分のサイトにRESTサービスを統合しようとしています。私はこのhttps://github.com/chriskacerguis/codeigniter-restserverの例を使用しています。これまでは必要なデータを正常に呼び出すことができました。しかし、私はそれに許可を追加したいと私はポストマンからアクセスしようとしたとき、私はこのエラーを取得するときに:私は認証を削除すると、それは再びCodeIgniter REST API基本認証が機能しない

{ 
    "status": false, 
    "error": "Unauthorized" 
} 

動作します。これはバグかどうか誰かが知っているか、私は行方不明ですか?これは私の設定です:

------------------------------------------------------------------------- 
| REST Login 
|-------------------------------------------------------------------------- 
| 
| Set to specify the REST API requires to be logged in 
| 
| FALSE  No login required 
| 'basic' Unsecured login 
| 'digest' More secured login 
| 'session' Check for a PHP session variable. See 'auth_source' to set the 
|   authorization key 
| 
*/ 
$config['rest_auth'] = 'basic'; 

|-------------------------------------------------------------------------- 
| REST Login Usernames 
|-------------------------------------------------------------------------- 
| 
| Array of usernames and passwords for login, if ldap is configured this is ignored 
| 
*/ 
$config['rest_valid_logins'] = ['admin' => '1234']; 

私も、URLを介してアクセスすることはできません。資格情報を入力しても、認証ポップアップが表示され続けます。これは、PHPサーバー変数

$ユーザ名=の$ this - >入力 - >サーバー(「PHP_AUTH_USER」)からユーザ名とパスワードの入力をチェックしている

+0

「ログイン用のユーザー名とパスワードの配列、ldapが設定されている場合は無視されます」を確認しましたか? – GeorgeGeorgitsis

+0

設定時にldapを削除しました – JianYA

答えて

0

を助けてください。 &

$ password = $ this-> input-> server( 'PHP_AUTH_PW'); application/libraries/REST_Controller.phpライン入力

:1971

protected function _prepare_basic_auth() 
    { 
     // If whitelist is enabled it has the first chance to kick them out 
     if ($this->config->item('rest_ip_whitelist_enabled')) 
     { 
      $this->_check_whitelist_auth(); 
     } 
     // Returns NULL if the SERVER variables PHP_AUTH_USER and HTTP_AUTHENTICATION don't exist 
     $username = $this->input->server('PHP_AUTH_USER'); 
     $http_auth = $this->input->server('HTTP_AUTHENTICATION'); 
     $password = NULL; 
     if ($username !== NULL) 
     { 
      $password = $this->input->server('PHP_AUTH_PW'); 
     } 
     elseif ($http_auth !== NULL) 
     { 
      // If the authentication header is set as basic, then extract the username and password from 
      // HTTP_AUTHORIZATION e.g. my_username:my_password. This is passed in the .htaccess file 
      if (strpos(strtolower($http_auth), 'basic') === 0) 
      { 
       // Search online for HTTP_AUTHORIZATION workaround to explain what this is doing 
       list($username, $password) = explode(':', base64_decode(substr($this->input->server('HTTP_AUTHORIZATION'), 6))); 
      } 
     } 
     // Check if the user is logged into the system 
     if ($this->_check_login($username, $password) === FALSE) 
     { 
      $this->_force_login(); 
     } 
    } 

認証し、このエラーを解決するためのAPIの構成で構成としてあなたがPHP_AUTH_USERおよびPHP_AUTH_PWサーバー変数を設定することができたり、代替認証方法として、APIキーを使用することができます。

+0

こんにちは!返信ありがとう!残念ながら、この追加でもまだ動作しません。同じエラーがあります。 – JianYA

+0

サーバのバージョンを '$ _SERVER ['PHP_AUTH_USER'] = 'admin';'に設定し、 'echo $ _SERVER ['PHP_AUTH_USER'];'で確認することができます。また、この基本認証を使いたくない場合に '$ config ['rest_auth'] = false;を設定することができ、認証目的でAPIキーを使用することができます。 –

0

私は問題が何であるか調べることができました。私のサーバーのAPIはfastcgiだったので、解決策はREST_Controllerファイルを変更することでした。私は、高速のCGIユーザー

https://forum.codeigniter.com/thread-36015.html

・ホープこれは誰かに助けのために働く、このリンクを見つけました!

関連する問題