如何维护iphone的Session

时间:2011-03-28 09:29:51

标签: iphone objective-c

在我的Iphone App中,用户使用用户名和密码登录。在用户登录后,他可以通过API访问每个属性和功能。但我想保持一个会话。也就是说,如果用户在应用程序中无所事事,在获得30分钟后,会话应该到期,并且必须要求用户使用他的用户名和密码登录。

2 个答案:

答案 0 :(得分:2)

我目前正在研究完全相同的事情。

我为会话有效性执行以下方案:

  1. 如果第一个传入请求Session Token似乎无效,我会尝试在后台静默重新生成会话密钥。

  2. 如果程序#1由于某些原因而无法正常工作,例如用户从其他地方更改了密码,我会再次将用户重定向到登录页面,并提醒“您的会话密钥已过期请注意再次“。

  3. 为了了解更多信息,我将会话密钥存储在NSUserDefaults

     // Saving the Key
     [[NSUserDefaults standardUserDefaults] setValue:@"ABCDEFGHIJK" forKey:@"SessionKey"];
    
     // Reading the Key
     [[NSUserDefaults standardUserDefaults] stringForKey:@"SessionKey"];
    

    希望这有帮助。

答案 1 :(得分:0)

在登录时设置上一个时间mPreviousTime = [NSDate timeIntervalSinceReferenceDate];,在您的情况下设置适当的kThresholdHideValue(以秒为单位),它是30分钟(30 * 60),您可以使用以下方法检查时间是否已过去...

NSTimeInterval timeNow = [NSDate timeIntervalSinceReferenceDate];
if( ( mPreviousTime + kThresholdHideValue <= timeNow ) )
{
         //Log out
}

并在用户执行某些操作时调用mPreviousTime = [NSDate timeIntervalSinceReferenceDate];。因此,只有当用户30分钟内未执行任何操作时,您才能注销。