八,使用Alamofire進行用戶認證
1,Alamofire支持如下幾種認證(Authentication)
本文講解使用 Alamofire 進行 HTTP Basic 驗證。
2,HTTP Basic認證介紹
(1)HTTP Basic認證是允許HTTP服務器對WEB浏覽器進行用戶身份證的方法。
(2)當一個客戶端向HTTP服務器進行數據請求時,客戶端會接收到HTTP服務器的身份認證要求,這時客戶端會提示用戶輸入用戶名及密碼,然後將用戶名及密碼以BASE64加密。並於每次請求數據時,將密文附加於請求頭(Request Header)中。
(3)HTTP服務器在每次收到請求包後,根據協議取得客戶端附加的用戶信息(BASE64加密的用戶名和密碼),解開請求包,對用戶名及密碼進行驗證,如果用戶名及密碼正確,則根據客戶端請求,返回客戶端所需要的數據。否則,返回錯誤代碼或重新要求客戶端提供用戶名及密碼。
3,HTTP Basic認證的使用場景
HTTP基本認證只提供簡單的用戶驗證功能,優點是使用簡單,適合於對安全性要求不高的系統或設備中。
比如:路由器的配置頁面就常使用HTTP Basic認證。(浏覽器輸入路由器ip地址,如192.168.1.1,這時就會彈出個用戶密碼輸入框進行權限驗證。)
4,HTTP Basic認證的缺點
(1)沒有靈活可靠的認證策略,如無法提供域(domain或realm)認證功能。
(2)BASE64 的加密強度非常低。當然,HTTP基本認證系統也可以與SSL或者Kerberos結合,實現安全性能較高(相對)的認證系統。
5,服務端代碼
為了測試Alamofire的認證功能,我們首先要在服務端創建個帶有認證的頁面用於測試。這裡以PHP為例:
<?php
//HTTP Basic認證
function authenticate()
{
header('WWW-Authenticate: Basic realm=""');
header('HTTP/1.0 401 Unauthorized');
echo "請輸入正確的用戶名和密碼";
exit;
}
if (!isset($_SERVER['PHP_AUTH_USER']) ||
addslashes($_SERVER['PHP_AUTH_USER'])!= 'hangge' ||
addslashes($_SERVER['PHP_AUTH_PW'])!= '123')
{
//認證失敗
authenticate();
}
else
{
//認證成功
echo "歡迎您: {$_SERVER['PHP_AUTH_USER']}<br />";
echo "當前時間:".date('h:i:s');
//authenticate(); //重新開始
}
?>
使用浏覽器訪問這個authenticate.php頁面,則會彈出對話框要求輸入用戶名和密碼:
如果輸入正確的用戶名(hangge)和密碼(123)則返回正常的數據,否則返回錯誤信息並需要繼續輸入:
6,客戶端代碼
使用Alamofire進行認證:
let user = "hangge"
let password = "123"
Alamofire.request(.GET, "http://www.hangge.com/authenticate.php")
.authenticate(user: user, password: password)
.responseString { response in
// debugPrint(response)
print(response.result.value)
}
從控制台打印的消息可以看出,認證通過,並成功獲取到數據:
原文出自:www.hangge.com 轉載請保留原文鏈接:http://www.hangge.com/blog/cache/detail_973.html