NSMutableURLRequest-BasicAuth 1.0.2

NSMutableURLRequest-BasicAuth 1.0.2

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布最后发布2014年12月

Arthur Ariel Sabintsev 维护。



  • Arthur Ariel Sabintsev

NSMutableURLRequest+BasicAuth

这是一个 iOS Objective-C 分类,用于执行 HTTP 基本访问认证,也称为 基本认证

为什么?

大多数在 iOS 上执行 基本认证 的解决方案都涉及到使用第三方 Base64 库。Apple 在 CFNetworking 框架中提供了原生函数,从而消除了对第三方库的需要。此分类把解决方案封装在一个干净且可重复使用的方法中。

变更日志(1.0.2)

  • 感谢 Mike Abdullah 提供此更新。
  • 处理包含冒号(例如 )的用户名的异常
  • 更新了 README

安装

手动安装

  • NSMutableURLRequest+BasicAuth 文件夹添加到您的项目中
  • NSMutableURLRequest+BasicAuth.h 导入到您的类(们)中。
  • 导入 Apple 的 CFNetworking 框架。

使用

  • 创建一个 NSMutableURLRequest 并确保设置以下属性
    • URL
    • HTTPMethod
  • 然后,使用您的请求调用 basicAuthForRequest:withUsername:andPassword 方法。
  • 之后,初始化您的 NSURLConnection 并加载您的 基本认证 请求。

接口

+ (void)basicAuthForRequest:(NSMutableURLRequest *)request withUsername:(NSString *)username andPassword:(NSString *)password;

实现

    // Cast username and password as CFStringRefs via Toll-Free Bridging
    CFStringRef usernameRef = (__bridge CFStringRef)username;
    CFStringRef passwordRef = (__bridge CFStringRef)password;

    // Reference properties of the NSMutableURLRequest
    CFHTTPMessageRef authoriztionMessageRef = CFHTTPMessageCreateRequest(kCFAllocatorDefault, (__bridge CFStringRef)[request HTTPMethod], (__bridge CFURLRef)[request URL], kCFHTTPVersion1_1);

    // Encodes usernameRef and passwordRef in Base64
    CFHTTPMessageAddAuthentication(authoriztionMessageRef, nil, usernameRef, passwordRef, kCFHTTPAuthenticationSchemeBasic, FALSE);

    // Creates the 'Basic - <encoded_username_and_password>' string for the HTTP header
    CFStringRef authorizationStringRef = CFHTTPMessageCopyHeaderFieldValue(authoriztionMessageRef, CFSTR("Authorization"));

    // Add authorizationStringRef as value for 'Authorization' HTTP header
    [request setValue:(__bridge NSString *)authorizationStringRef forHTTPHeaderField:@"Authorization"];

    // Cleanup
    CFRelease(authorizationStringRef);
    CFRelease(authoriztionMessageRef);

重要注意事项

如果用户名包含冒号(例如 ),将抛出异常。

创建和维护者

Arthur Ariel SabintsevID.me, Inc. 创建。