返回 导航

Swift

hangge.com

Swift - HTTP网络操作库Alamofire使用详解4(用户权限认证)

作者:hangge | 2015-12-11 08:50
相关系列文章:(文章代码均已升级至Swift3)
Swift - HTTP网络操作库Alamofire使用详解1(配置,以及数据请求)
Swift - HTTP网络操作库Alamofire使用详解2(文件上传)
Swift - HTTP网络操作库Alamofire使用详解3(文件下载,断点续传)
[当前文章] Swift - HTTP网络操作库Alamofire使用详解4(用户权限认证)


八,使用Alamofire进行用户认证

1,Alamofire支持如下几种认证(Authentication)
HTTP Basic
HTTP Digest
Kerberos
NTLM
本文讲解使用 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)没有灵活可靠的认证策略,如无法提供域(domainrealm)认证功能。
(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("http://www.hangge.com/authenticate.php")
    .authenticate(user: user, password: password)
    .responseString  { response in
       // debugPrint(response)
        print(response.result.value)
}
从控制台打印的消息可以看出,认证通过,并成功获取到数据:

评论

全部评论(1)

回到顶部