【问题标题】:Appcelerator. Handling user sessions加速器。处理用户会话
【发布时间】:2011-04-21 09:37:08
【问题描述】:

钛 SDK 版本:1.6.1 iPhone SDK 版本:4.2

我对在 Appcelerator 应用程序 (iPhone) 中处理用户“会话”时的最佳做法感到有些困惑。就像现在我将用户令牌保存在一个属性中,然后在每个页面上检查它是否仍然存在(比如在网页上)。这不是很好,必须有更好的方法。

那么,处理用户登录会话的最佳做法是什么?有人可以为我解释一下这个过程吗?一步一步来。

感谢所有输入!

【问题讨论】:

  • 您是希望在一段时间内使用户会话过期还是只是验证那里已通过身份验证?
  • 就像现在一样,我在登录时使用 API 的用户令牌保存了一个名为 token 的属性。我想让用户注销(销毁令牌),然后以另一个用户的身份重新登录。所以我正在寻找验证用户是否仍然经过身份验证(令牌存在)。我怎样才能在最佳实践中做到这一点?

标签: appcelerator-mobile


【解决方案1】:

我一直在 iOS 上处理认证验证如下:

  1. 在我的 app.js 首次加载时,我会检查令牌是否有效,如果不是,我会显示登录信息。

    我使用类似于下面的方法

功能需要2登录(){ var lastLogin = Ti.App.Properties.getString('last_login'); if(lastLogin.length==0){ 返回真; } //添加一些日期验证以使任何令牌过期 // 根据验证规则返回一个值 }; 函数管理登录(){ 如果(需要2登录()){ wLogin.open(); //打开登录窗口 }别的{ wMain.open(); //打开主窗口 } };
  1. 当用户注销时,我会向 app.js 发送一个事件以重新加载登录屏幕
  2. 我的 app.js 中还有以下内容可以在应用简历上处理我还检查令牌是否仍然有效

对于恢复处理,我在 app.sj 中使用以下内容:

1) 检查我们是否在 iOS 4+ 上

function isiOS4Plus(){
    // add iphone specific tests
    if (Ti.Platform.name == 'iPhone OS'){
        var version = Ti.Platform.version.split(".");
        var major = parseInt(version[0],10);

    // can only test this support on a 3.2+ device
    if (major >= 4){
        return true;
    }
   }
   return false;
};

2) 然后添加处理程序

if (isiOS4Plus()){
    // fired when an app resumes for suspension
    Ti.App.addEventListener('resumed',function(e){
       //check if login is still valid
       manageLogin(); //I just reuse my login logic on resume
    });
}

请注意,这假设仅在应用启动或恢复时才需要检查身份验证令牌。这应该涵盖大多数情况,但也有一些不适合的情况。

【讨论】:

  • 看起来很有趣。有几个关于代码的问题。 1) 为什么要检查 iOS 版本? 2)如果用户注销并且从不关闭应用程序怎么办。如何检查用户是否仍然登录? 3) 我可以设置用于恢复事件的代码吗?谢谢!
  • 你要检查iOS版本,因为低于4没有简历。当用户后台应用程序时,简历将触发。所以你应该没问题,因为每次他们激活应用程序(从后台或重新开始)时都会检查你。恢复/登录代码非常特定于我如何处理我的会话。我会添加一点,但它确实取决于应用程序。
  • 好的,事情越来越清楚了。就像现在一样,如果用户令牌不存在,我将替换 TabBar 按钮。我不开窗。哪种方式最好?我应该打开一个窗口吗?我是否可以查看您的代码,因为我正在寻找一种更好的方式来处理登录(您的方式)。
  • 这里还有一些代码,因为它是导航系统的一部分,所以很难将其全部提取出来gist.github.com/948579 希望这能给您想要的答案。
  • 谢谢!我会仔细检查它。希望我可以在我的应用中使用相同的系统。
猜你喜欢
  • 2020-05-07
  • 2021-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-03
  • 1970-01-01
  • 2016-11-23
  • 1970-01-01
相关资源
最近更新 更多