Posted at

iOSのネイティブでユーザ名とパスワードを入力し、認証を行った後、そのセッションを維持したままWebViewへ飛ばす方法

More than 1 year has passed since last update.

iOSアプリを作っているときに、認証情報を次のWebViewへ持たせるときに詰まったので、その対処法を書きます。

認証を行った段階で、サーバから返答されるCookieを保存し、WebViewに渡します。

通信にはAlamofireを使っています

Alamofire.request("<url>",parameters: params)

.responseString { response in
let cookies = HTTPCookie.cookies(withResponseHeaderFields: response.response?.allHeaderFields as! [String : String], for: (response.response?.url!)!)

for i in 0 ..< cookies.count {
let cookie = cookies[i]
HTTPCookieStorage.shared.setCookie(cookie)
}

}


let authUrl = URL(string: "認証URL")
let url = URL(string: "ロードしたいURL")

var request = URLRequest(url: url)
let cookies = HTTPCookieStorage.shared.cookies(for: authUrl! as URL)
let header = HTTPCookie.requestHeaderFields(with: cookies!)
// Cookieをセットする
request.allHTTPHeaderFields = header
// webViewをロードする
webView.loadRequest(request as URLRequest)