【发布时间】:2018-10-29 06:29:42
【问题描述】:
我有 2 个应用程序,两个应用程序都使用 WKWebview 进行 SSO 登录。两个应用程序单独运行良好。
现在让我们来看看下面的场景。
假设我登录了一个应用程序,从该应用程序检索 WKWebview cookie 并在第二个应用程序的 WKWebview 中设置此 cookie 信息。我的期望是 SSO 应该在第二个应用程序中工作,但它不工作。
以下是我从第一个应用程序登录后用于从 WKwebview 检索 cookie 的代码
扩展 WKWebView {
@available(iOS 11.0, *) private var httpCookieStore: WKHTTPCookieStore { return WKWebsiteDataStore.default().httpCookieStore } func getCookies(for domain: String? = nil, completion: @escaping ([String : Any])->()) { var cookieDict = [String : AnyObject]() if #available(iOS 11.0, *) { httpCookieStore.getAllCookies { (cookies) in for cookie in cookies { print("cookie iterator started") print("cookie=======\(cookie)") if let domain = domain { if cookie.domain.contains(domain) { cookieDict[cookie.name] = cookie.properties as AnyObject? } } else { cookieDict[cookie.name] = cookie.properties as AnyObject? } } completion(cookieDict) } } else { // Fallback on earlier versions } } }
以下是我用于在第二个应用的 WKwebview 中设置 cookie 的代码
let cookie= HTTPCookie(properties: [
.domain: "dev.mycompany.net",
.path: "/",
.name: "PF",
.value: "327y48234g2hgdhjwedguyw23oSYVbVLwf9",
.secure: "TRUE",
.version: 1,
.expires: NSDate(timeIntervalSinceNow: (562225018+1000000))
])!
HTTPCookieStorage.shared.cookieAcceptPolicy = HTTPCookie.AcceptPolicy.always
HTTPCookieStorage.shared.setCookie(cookie)
【问题讨论】:
-
这是在 cookie "327y48234g2hgdhjwedguyw23oSYVbVLwf9" 中登录的,对吗?询问您的服务器开发人员,此 cookie 在用户登录后应该是有效的
-
通过 Safari 开发者门户调试您的 cookie,您的最新 cookie 应该在那里。
标签: ios cookies webview single-sign-on wkwebview