我已經使用this tutorial爲Yii應用實現REST api。它運作良好,但我需要在認證部分提供建議。在本教程中,有一種方法可以在2個頭文件中接收用戶名和密碼(未加密),根據教程,我可以使用相同的方法在每個API調用中檢查用戶數據。yii Rest api身份驗證iOS應用
這是身份驗證方法的代碼
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)));
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');
}
}
所以,我有以下問題:
1 - 它是不安全的使用這個方法給出的事實,我發送用戶名和密碼加密?
2-我應該考慮爲此實現Oauth2嗎?這個API只有2個方法我現在會使用,所以如果不是絕對必要的話,我不想花太多時間在額外的授權協議上。
任何幫助非常感謝。
感謝
好的感謝您抽出時間,對如何更改爲https的任何建議? – Andrespch
這不是微不足道的 - 您需要獲得證書並相應地設置服務器。您可能想與您的託管服務提供商或服務器管理員交談 – NSPekka