swift实现http网络操作框架_Swift实现HTTP网络操作库Alamofire使用详解4(用户权限认证)

更新时间:2020-03-27    来源:网络相关    手机版     字体:

【www.bbyears.com--网络相关】

 

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


//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"]}
";
    echo "当前时间:".date("h:i:s");
    
    //authenticate(); //重新开始
}
?>

使用浏览器访问这个authenticate.php页面,则会弹出对话框要求输入用户名和密码:


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


如果输入正确的用户名(hangge)和密码(123)则返回正常的数据,否则返回错误信息并需要继续输入:

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

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

本文来源:http://www.bbyears.com/jiaocheng/89986.html

热门标签

更多>>

本类排行