2017-05-22 8 views
0

iOS 응용 프로그램이있어 로그인해야하고 일부 사용자 데이터를 볼 수 있습니다 ... 일부 추가 편집시 사용자가 몇 가지 특수 링크를 설정할 수있는 URL 링크가 있습니다. 속성, ...하지만 그들은 이미 응용 프로그램에 로그인되어있는 경우 사용자가 페이지 내부에 로그인하는 것이 정말 짜증나게합니다.Swift : Safari 앱용 사용자 쿠키 설정

이러한 이유로 사용자가 페이지로 이동할 때 인증 쿠키가 설정되도록 HTTPCookieStorage에 사용자 정의 쿠키를 저장해야합니다.

키 - 값으로 맞춤 쿠키를 생성하고 사용자가 내 페이지로 이동할 때 Safari에서 사용하도록 저장하는 방법은 무엇입니까?

내가 더 잘 내 상황을 이해하기 위해 더 많은 정보를 제공합니다


편집 할 수 있습니다.

내 앱에는 버튼이 하나 있습니다.

이 버튼을 클릭하면 유효한 토큰을 얻기 위해 API를 호출합니다. 토큰을받은 후이 토큰을 쿠키로 저장해야합니다. 이렇게하는 "서버"방법은

localStorage.setItem('token', this.token) 

이 토큰을 HTTPCookieStorage에 저장 한 후에 내 페이지를 열어 두었습니다.

UIApplication.shared.open(myURL, options: [:], completionHandler: { (success) in 
         print("Url open") 
        }) 

myURL 페이지에서 응용 프로그램은 토큰 쿠키를 찾습니다. 쿠키가 있으면 웹 앱을 열고, 그렇지 않으면 로그인 페이지를 표시합니다.

내 목표는 로그인 페이지 열기를 방지하는 것입니다.

답변

-1

스토어 쿠키 :

func storeCookies() { 
    let cookiesStorage = HTTPCookieStorage.shared 
    let userDefaults = UserDefaults.standard 

    let serverBaseUrl = "http://example.com" 
    var cookieDict = [String : AnyObject]() 

    for cookie in cookiesStorage.cookies(for: NSURL(string: serverBaseUrl)! as URL)! { 
     cookieDict[cookie.name] = cookie.properties as AnyObject? 
    } 

    userDefaults.set(cookieDict, forKey: "cookiesKey") 
} 

가 검색 :

func restoreCookies() { 
    let cookiesStorage = HTTPCookieStorage.shared 
    let userDefaults = UserDefaults.standard 

    if let cookieDictionary = userDefaults.dictionary(forKey: "cookiesKey") { 

     for (_, cookieProperties) in cookieDictionary { 
      if let cookie = HTTPCookie(properties: cookieProperties as! [HTTPCookiePropertyKey : Any]) { 
       cookiesStorage.setCookie(cookie) 
      } 
     } 
    } 
} 
+1

왜 [이전과 동일한 대답을 반복] (http://stackoverflow.com/a/43980792/1187415) ? 그 이전에 질문을하고 대답했다고 생각하면 그것을 중복으로 표시 할 수 있습니다. –

+1

죄송합니다.하지만이 질문에 대한 답변이 어떻게 표시되지 않습니까? 코드는 이미 쿠키를 userDefaults에 저장 한 다음 사용자 기본값에서 cookiesStorage로 다시 저장합니다. 새 맞춤 쿠키를 추가 할 수있는 위치가 표시되지 않습니까? –

+0

@MartinR 게시물 소유자가 질문을 삭제하기 때문입니다. 그러면 대답에 더 이상 액세스 할 수 없습니다. –