我正在建立一個帶有rails支持服務器的iphone應用程序。我正在使用設計寶石。我在客戶端的用戶登錄時遇到了問題(一切工作在網絡端,甚至在使用CURL的終端上)。 在Xcode上我可以創建一個用戶,我可以登錄。登錄後iOS用戶登錄會話通過設計但Auth_token不保留
(and recieving this in the log: "User logged in!")
然後我被推送到indexViewController-,在這裏我收到一個帖子不加載的錯誤。原因是因爲在post_controller.rb我有一個
before_filter :authenticate_user!
防止帖子加載。問題是,成功登錄時生成的auth_token未被存儲並傳遞到不同的視圖。那麼,在日誌中我得到:
'You need to sign in before continuing.'
好像什麼,我剛纔解釋從來沒有發生過的第一部分..
在indexViewController viewDidLoad方法中,我有:
if (![[APIClient sharedClient] isAuthorized]) {
LoginViewController *loginViewController = [[LoginViewController alloc] init];
[self.navigationController pushViewController:loginViewController animated:YES];
}
isAuthorized是APIClient中的一個BOOL,用於檢查userID> 0
在用戶模型中,這是創建登錄會話的代碼
+ (void)loginUser:(NSString *)signature
email:(NSString *)email
password:(NSString *)password
block:(void (^)(User *user))block
{
NSDictionary *parameters = @{ @"user": @{
// @"signature": signature,
@"email": email,
@"password": password
}
};
[[APIClient sharedClient] postPath:@"https://stackoverflow.com/users/sign_in" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
User *user = [[User alloc] initWithDictionary:responseObject];
if (block) {
block(user);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
if (block) {
block(nil);
}
}];
}
我猜這是我在這裏,我缺少一些auth_token實現?由於它是由devise自動生成的 - 我不知道如何告訴xcode記住它。 auth_token是一個在db上的用戶表中有一列的字符串。我應該將auth_token作爲param添加到保存用戶電子郵件和用戶名的字典中嗎?或者我如何讓令牌繼續存在? 任何想法都會有所幫助。