八,使用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