LoginSignup
19

More than 5 years have passed since last update.

【iOS】Alamofireを使ってauth_tokenをヘッダーに含める方法

Last updated at Posted at 2015-08-27

Alamofireを使って、auth_tokenパラメーターではなく、ヘッダーに含めてHTTP通信をする方法を紹介したいと思います。

そもそも何でauth_tokenをパラメーターに含めてはいけないのか!?

ユーザーは自由にパラメーターを変更してアクセスすることができます。HTTPメソッドがGETであればURLに表示されている部分を変更するだけといういとも簡単な操作で可能になります。たとえHTTPメソッドがPOSTでも同様です。
なので、盗まれてはいけない値auth_token絶対にパラメーターに含めてはいけません。

 

auth_tokenをヘッダーに含める方法

パラメーターを送らない場合は、非常に簡単です。

StockTweets.swift
class func checkReplyLetter() {
     let authToken = CurrentUser.sharedInstance.authToken

     let URL = NSURL(string: "http://localhost:3000/api/v1/twees/")!
     let mutableURLRequest = NSMutableURLRequest(URL: URL)
     mutableURLRequest.HTTPMethod = "GET"
     // ヘッダーにauth_tokenを含める
     mutableURLRequest.setValue(authToken, forHTTPHeaderField: "auth_token")  // 第一引数が値で、第二引数がキー
     let manager = Alamofire.Manager.sharedInstance

     // HTTP通信
     manager.request(mutableURLRequest)
         .responseJSON { (request, response, JSON, error) in
     }
}

パラメーターを送る場合は、少しだけやることが増えます。

StockTweets.swift
class func checkReplyLetter() {
     let authToken = CurrentUser.sharedInstance.authToken
     var params: [String: AnyObject!] = [
         "text": text,
     ]

     let URL = NSURL(string: "http://localhost:3000/api/v1/twees/")!
     let mutableURLRequest = NSMutableURLRequest(URL: URL)
     mutableURLRequest.HTTPMethod = "POST"  // GETではなくPOST
     mutableURLRequest.setValue(authToken, forHTTPHeaderField: "auth_token")
     let manager = Alamofire.Manager.sharedInstance
     // 増える箇所
     let request = Alamofire.ParameterEncoding.URL.encode(mutableURLRequest, parameters: params).0  // エンコードの設定が必要になります。

     // HTTP通信
     manager.request(request)
         .responseJSON { (request, response, JSON, error) in
     }
}

さいごに

Alamofireの導入方法の記事
· http://qiita.com/SoyaTakahashi/items/4a40aefdf13417b1857f

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19