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

 

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

时间: 2024-07-30 23:40:41

Swift实现HTTP网络操作库Alamofire使用详解4(用户权限认证)的相关文章

Swift HTTP网络操作库Alamofire使用详解1(配置,以及数据请求)

一,Alamofire的说明与配置     1,什么是Alamofire (1)Alamofire 的前身是 AFNetworking.AFNetworking 是 iOS 和 OS X 上很受欢迎的第三方HTTP网络基础库. (2)其实 AFNetwork 的前缀 AF 便是 Alamofire 的缩写. (3)Swift发布后,AFNetworking的作者又用Swift语言写了个相同功能的库,这便是 Alamofire. (4)Alamofire 本质是基于`NSURLSession`,并

Swift HTTP网络操作库SwiftHTTP使用详解1(配置,及数据请求)

一,SwiftHTTP的说明与配置 1,什么是SwiftHTTP SwiftHTTP本质是基于`NSURLSession`,并做了封装.使用SwiftHTTP可以让我们网络请求相关代码(如获取数据,提交数据,上传文件,下载文件等)更加简洁易用.(有点类似于我前面文章介绍的另一个网络库:Alamofire) 2,SwiftHTTP的功能特性: (1)便利的闭包API (2)支持运行队列(NSOperationQueue) (3)支持参数编码 (4)内置JSON请求序列化 (5)上传/下载文件带有进

Swift HTTP网络操作库Alamofire实现文件上传详解

六,使用Alamofire进行文件上传 1,Alamofire支持如下上传类型: File Data Stream MultipartFormData 2,使用文件流的形式上传文件 let fileURL = NSBundle.mainBundle().URLForResource("hangge", withExtension: "zip")   Alamofire.upload(.POST, "http://www.hangge.com/upload.

Swift HTTP网络操作库Alamofire实现文件下载,断点续传例子

七,使用Alamofire进行文件下载 1,自定义下载文件的保存目录 下面代码将logo图片下载下来保存到用户文档目录下(Documnets目录),文件名不变. Alamofire.download(.GET, "yun_qi_img/logo.png") {     temporaryURL, response in     let fileManager = NSFileManager.defaultManager()     let directoryURL = fileMana

android 网络请求库volley方法详解_Android

使用volley进行网络请求:需先将volley包导入androidstudio中 File下的Project Structrue,点加号导包   volley网络请求步骤:       1. 创建请求队列       RequestQueue queue = Volley.newRequestQueue(this);       2.创建请求对象(3种)                            StringRequest request = new StringRequest("

android 网络请求库volley方法详解

使用volley进行网络请求:需先将volley包导入androidstudio中 File下的Project Structrue,点加号导包 volley网络请求步骤: 1. 创建请求队列       RequestQueue queue = Volley.newRequestQueue(this); 2.创建请求对象(3种) StringRequest request = new StringRequest("请求方法","请求的网络地址","成功的网

《Android 网络开发与应用实战详解》——2.3节Android系统架构

2.3 Android系统架构 Android 网络开发与应用实战详解 在本节内容中,将进一步分解Android应用程序,详细剖析Android应用程序的核心构成部分,为读者学习本书后面知识打下基础. 2.3.1 Android体系结构介绍 Android作为一个移动设备的平台,其软件层次结构包括操作系统(OS).中间件(MiddleWare)和应用程序(Application).根据Android的软件框图,其软件层次结构自下而上分为以下4层. (1)操作系统层(OS). (2)各种库(Lib

《Android 网络开发与应用实战详解》——2.1节简析Android安装文件

2.1 简析Android安装文件 Android 网络开发与应用实战详解 当我们下载并安装Android后,会在其安装目录中看到一些安装文件.这些文件具体是干什么用的,了解这些对学习后面的开发知识十分有用.所以在本节的内容中将简要介绍这些安装文件的基本知识. 2.1.1 Android SDK目录结构 安装Android SDK后,其安装目录的具体结构如图2-1所示. temp:里面包含了一些常用的文件模板. tools:包含了一些通用的工具文件. usb_driver:包含了AMD64和X8

《Android 网络开发与应用实战详解》——1.4节Android模拟器

1.4 Android模拟器 Android 网络开发与应用实战详解 我们都知道程序开发需要调试,只有经过调试之后才能知道程序是否正确运行.作为一款手机系统,怎么样在能在计算机平台上调试Android程序呢?不用担心,谷歌提供了模拟器来解决此问题.所谓模拟器,就是指在计算机上模拟安卓系统,可以用这个模拟器来调试并运行开发的Android程序.开发人员不需要一个真实的Android手机,使用计算机就可以模拟运行一个手机,即可开发出应用在手机上面的程序.模拟器在计算机上模拟运行的效果如前面的图1-5