2016-06-23 5 views
0

Alamofire Swiftの接続要求プロパティとしてAuthorizationトークンを設定するのに苦労しています。Alamofireの同様のオプションがHttpURLConnectionのようにsetRequestPropertyに必要です。Android

ヘッダーにAuthトークンを送信しようとしましたが、これを達成できました。

アンドロイドでは、認証トークンをHttpUrlConnectionと設定しました。 setRequestPropertyとAPIは正常に動作していますが、Swiftでは同じAPIを使用する必要がありますが、ヘッダーに認証トークンを送信することは役に立ちません。

オプションは、私が試した: -

  1. MutableURlRequestの作成とHTTPAdditionalHeadersを設定します。

  2. var defaultHeaders = Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders ?? [:] LET構成= NSURLSessionConfiguration.defaultSessionConfiguration() configuration.HTTPAdditionalHeadersの=のdefaultHeaders

は、誰もが要求プロパティではなく、ヘッダーとして認証トークンを送信し、私を助けてください。

ありがとうございます。

答えて

0

あなたが他のリクエストのパラメータ、このような何かをトークンに沿って承認を送ることができます:

private var parameters: [String: AnyObject]? { 
    switch self { 
     case Profile(let token, ...): 
      return ["authCode" : token, ...] 
     ... 
    } 
} 

これだけのヘッドアップのために、ヘッダとして送信することをお勧めしますしかし、これは私がそれを行う方法です。

import Alamofire 

// Helper to build Alamofire Requests 

enum APIRouter { 

    static let baseURL = "http://..." 

    case Authorize(token: String) 
    ... 

} 

extension APIRouter: URLRequestConvertible { 

    var URLRequest: NSMutableURLRequest { 
     let URLRequest = NSMutableURLRequest(URL: URL) 
     URLRequest.HTTPMethod = method.rawValue 

     // Server token is set after authorisation and will be applied to the following requests 
     if let token = SecureManager.sharedInstance.serverToken { 
      URLRequest.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization") 
     } 

     let encoding = Alamofire.ParameterEncoding.URL 
     let request = encoding.encode(URLRequest, parameters: parameters).0 
     return request 
    } 

    private var URL: NSURL { 
     let baseURL = NSURL(string: APIRouter.baseURL) 
     return baseURL!.URLByAppendingPathComponent(path) 
    } 

    private var path: String { 
     switch self { 
     case Authorize: 
      return "rest/oauth/authorize" 
     ... 
     } 
    } 

    private var method: Alamofire.Method { 
     switch self { 
     case Authorize: 
      return .POST 
     ... 
     } 
    } 

    private var parameters: [String: AnyObject]? { 
     switch self { 
     ... 
     } 
    } 

} 
関連する問題