2011-05-07 4 views
0

많은 앱에서 한 번만 앱에 로그인하면 다음 번에 앱을 열면 사용자 이름과 비밀번호를 다시 입력 할 필요가 없습니다. SFHFKeychainUtils의 도움으로 어떻게이 작업을 수행 할 수 있습니까?iphone 세션 로그인에 대한 도움

답변

1

질문에 이미 답변 해 주셨습니다. SFHFKeychainUtils 래퍼를 사용하여 응용 프로그램의 키 체인에 자격 증명을 저장할 수 있습니다. 응용 프로그램이로드되면 암호가 있는지 확인합니다. 그렇지 않은 경우, 사용자에게 로그인하여 사용자 이름 & 암호를 적절하게 저장하도록 요청하십시오.

// Application Loads... 

NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults]; 
NSString *username = [standardDefaults stringForKey:@"kApplicationUserNameKey"]; 

if (username) { 
    NSError *error = nil; 
    NSString *password = [SFHFKeychainUtils getPasswordForUsername:username andServiceName:@"com.company.app" error:&error]; 

    // Check password... 
} else { 
    // No username. Prompt the user to enter username & password and store it 
    username = @"userEnteredUsername"; 
    NSString *password = @"userEnteredPassword"; 

    [standardDefaults setString:username forKey:@"kApplicationUserName"]; 
    NSError *error = nil; 
    BOOL storeResult = [SFHFKeychainUtils storeUsername:username andPassword:password forServiceName:@"com.company.app" updateExisting:YES error:&error]; 
} 

이것은 분명히 불완전하고 적절한 방식으로 구성되지 않았지만 기본 흐름을 이해할 수 있어야합니다.

+0

문제는 SFHF 암호가 사용자 이름의 존재 여부를 확인하기 위해 사용자 이름을 필요로한다는 것입니다 .. . 이걸 어떻게 해결할 수 있습니까? – adit

+0

상수 이름을 사용할 수 있습니다. 나중에 참조 할 수 있도록 정확하게 문제가 무엇인지 명확히하십시오. 원래 게시물에서 사용자 이름/비밀번호 체계를 참조하십시오. –

+0

예, 실제로 맞습니다 .. 로그인 페이지에서 항상 사용자 이름과 암호를 볼 수 있습니다.이 경우 사용자 이름을 하드 코드 할 것을 제안하고 있습니까? – adit

0

그런 용도로 NSUserDefaults를 사용할 수 있습니다.

[[NSUserDefaults standardUserDefaults] setObject:username forKey:@"username"]; 
[[NSUserDefaults standardUserDefaults] setObject:password forKey:@"password"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

다음 번 사용자가 응용 프로그램을 열고, 당신은 단순히이 정보를 얻을 수 있습니다

NSString *username = [[NSUserDefaults standardUserDefaults] stringForKey:@"username"]; 
NSString *password = [[NSUserDefaults standardUserDefaults] stringForKey:@"password"]; 
+1

자격 증명을 NSUserDefaults에 저장하면 안됩니다. 키 체인과 같은 안전한 위치에 저장해야합니다. –

+0

잘 알고 계시다면, 사용자 기본값이 plist 파일에 열린 텍스트로 저장되어 있으며 백업을 수행 할 때 동기화된다는 기사가 있습니다. 감사합니다 딜란. – romaonthego