1

我一直在使用 VS 2012 / MVC 4 / .NET 4.5 附带的(相对)新的 Web API,并有一个自定义消息处理程序来处理启动和运行的身份验证。我还设法将它连接到一个很棒的旧 .NET 2.0 Membership Provider。

我现在通过在 HTTP 请求标头中使用令牌来解决“对每个 HTTP 请求进行身份验证”问题,我很乐意这样做。

现在,对于移动应用程序,当用户打开应用程序时,我第一次显示登录屏幕,除非出于任何原因我收到“未授权”消息,否则不会再次显示它。但是对于我基于 Web 浏览器的项目,我登录一次,浏览器(只要它保持打开状态)将保持身份验证。

使用这种身份验证强制超时的最佳方法是什么?如果有人这样做,我宁愿根据不活动注销。这让我有点难过,所以任何指导表示赞赏:-)

谢谢!

4

1 回答 1

0

您需要考虑两个空闲超时。

  1. 服务器端空闲超时,过期到您提到的令牌
  2. 客户端(移动应用程序)空闲超时,指示用户重新输入凭据

对于 #1,您必须跟踪哪些令牌处于活动状态,或者它们何时到期等......有多种方法可以做到这一点。我建议您如何实现它取决于您是部署到 IIS 还是 Azure 以及是否要向外扩展。通常,尽管您想要存储此信息的中央位置。数据库有效,但速度相对较慢。会话状态可以在 Azure 中工作,因为会话状态可以通过 App Fabric 跨服务器共享,但在 IIS 中,您必须使用附加组件在服务器之间共享会话状态。如果您在 .NET 中使用 HttpRuntimeCache,同样如此

还应该注意的是,在服务器端进行此类检查至关重要,以防止有人根据您最终决定实现事物的方式劫持您引用的令牌。

对于 #2,我们在 iOS 应用程序中所做的是跟踪空闲超时。每次用户在应用程序中提供任何类型的输入(例如 BeginTouch 事件)时,我们都会停止空闲计时器并重新启动它。计时器配置为在计时器触发时将用户带到登录屏幕。同样的事情应该在 Android、WP7 等中运行良好。

于 2012-10-16T16:17:49.050 回答