2012-01-22 53 views
1

我正在使用XCode4進行開發。 在我的應用程序中,我需要登錄到網站才能獲取信息。然後通過使用我必須執行一些任務。 我通過REST服務調用訪問網站。 ASIHttpRequest通過後 我正在設置用戶名&這樣的密碼。如何實施登錄和註銷應用程序

[request setuserName:@"usernameString"]; 
[request setpassword:@"Passwordstring"]; 

但我不知道是否創建任何會話。 因此,在註銷時,我只重定向控制器登錄屏幕&使用戶名和密碼字段爲空。

但是在註銷後,它會輸入錯誤的用戶名和密碼來重新登錄。

我的問題:

  1. 無論我必須創建一個會話同時登錄和超時在註銷時的會話。怎麼做?

  2. 在iphone應用中如何登錄&註銷一般都做完了?

回答

2

謝謝大家。這個問題解決了。

在登錄時,ASIHTTPRequest正在成功登錄時創建cookie對象。如果用戶沒有在應用程序內花費1分鐘並通過點擊登出來出現該cookie對象。之後,它將獲取任何userId和密碼(垃圾數據)以再次登錄。它發生是因爲之前的cookie正在照顧這一點。

但是,現在登出的時候,我正在刪除這是在日誌中時創建的cookie的

我加入以下代碼註冊了: - 。

NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 

for (NSHTTPCookie *each in [[[cookieStorage cookiesForURL:YOUR_URL] copy] autorelease]) 
{ 
     // NSLog(@"cookie deleted==%@",each); 
     [cookieStorage deleteCookie:each]; 
} 
2

您最好的選擇將使用NSUserDefaults類,例如:

// saving your data. 
    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults]; 
    [standardUserDefaults setObject:myUsername forKey:@"username"]; 

    // retrieve your data 
    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults]; 
    NSString *username = [standardUserDefaults objectForKey:@"username"]; 

你也可以使用NSUserDefaults例如通過存儲用於isLoggedIn布爾關鍵日誌存儲在當前會話的狀態關鍵

[standardUserDefaults setBOOL:TRUE forKey:@"isLoggedIn"]; 

當用戶希望退出只是將該值設置爲FALSE到再次向用戶提供登錄視圖,就好像這是用戶第一次使用該應用程序一樣。

您不需要爲已登錄的用戶設置超時會話,除非您的設計或要求如此說明,但您也可以通過使用NSUserDefaults來存儲用戶登錄的日期和時間,並持續檢查以驗證會話超時,但我不建議做這樣的事情,但一切都可能在這裏。

1

AhmadTK的答案是好的,只是一對夫婦點:

  • 請務必先撥打[standardUserDefaults同步]。在設置值之後。
  • 發起isLoggedIn項目的檢查應用程序啓動時,如果假,呈現登錄屏幕的用戶
  • 手柄以相反的註銷處理(設置isLoggedIn值爲NO)
+0

謝謝但是,如果用戶登錄並按下主頁按鈕。這時根據你([standardUserDefaults setBOOL:TRUE forKey:@「isLoggedIn」];),isLoggedIn = true&app在後臺運行。假設用戶通過紅色減號圖標殺死後臺正在運行的應用程序。然後isLoggedIn值爲true,並存儲在standardUserDefaults數據庫中。當用戶想要再次登錄時,它不會允許他登錄。因爲在登錄時isLoggedIn值必須爲FALSE。 – umakanta

+0

我通過紅色減號圖標查殺了背景運行應用程序。但是此時applicationWillTerminate方法未被調用。 所以在這種情況下,我應該給[standardUserDefaults setBOOL:FALSE forKey:@「isLoggedIn」]; 在此先感謝......... – umakanta