2012-05-04 27 views
3

从实施例的Yii设置宁静API认证头我有此代码如何使用附加组件RESTClient实现火狐

private function _checkAuth() 
{ 
    // Check if we have the USERNAME and PASSWORD HTTP headers set? 
    if(!(isset($_SERVER['HTTP_X_USERNAME']) and isset($_SERVER['HTTP_X_PASSWORD']))) { 
     // Error: Unauthorized 

     $this->_sendResponse(401); 
    } 
    $username = $_SERVER['HTTP_X_USERNAME']; 
    $password = $_SERVER['HTTP_X_PASSWORD']; 
    // Find the user 
    $user=User::model()->find('LOWER(username)=?',array(strtolower($username))); 
    $this->_sendResponse('200','$username'); 
    if($user===null) { 
     // Error: Unauthorized 
     $this->_sendResponse(401, 'Error: User Name is invalid'); 
    } 

    else if(!$user->validatePassword($password)) { 
     // Error: Unauthorized 
     $this->_sendResponse(401, 'Error: User Password is invalid'); 
    } 
} 

如何设置用于认证报头信息。 如何在请求中设置HTTP_X_USERNAME和HTTP_X_PASSWORD;

RESTClient插件的名称,值和正文? 感谢提前

回答

4

我理解你的问题(与this post in yii forum相同)与RESTClient插件相关。要设置你的头在RESTClient实现插件:使用 '头' 的功能:

  • 列表项
  • 菜单中的 '头'
  • '自定义页眉'
  • '名称':X_PASSWORD
  • “值':emo

和X_USERNAME一样。

HTH,

JM。

6

您好,我已经解决了这个问题,下面的服务器端代码,设置HTTP请求头,因为你已经在客户端做。

private function _checkAuth() 
    { 
     // Check if we have the USERNAME and PASSWORD HTTP headers set? 

     $headers = apache_request_headers(); 

     if(!(isset($headers['X_'.self::APPLICATION_ID.'_USERNAME']) and isset($headers['X_'.self::APPLICATION_ID.'_PASSWORD']))) { 
      // Error: Unauthorized 
      $this->_sendResponse(401); 
     } 

     $username = $headers['X_'.self::APPLICATION_ID.'_USERNAME']; 
     $password = $headers['X_'.self::APPLICATION_ID.'_PASSWORD']; 
}