【发布时间】:2008-09-17 09:31:56
【问题描述】:
我正在使用 .NET 3.5 和框架附带的移动控件开发一个 ASP.NET 移动网站。我有一个登录表单,系统将在其中对用户进行身份验证,以便他/她可以访问某些受限页面。
在标准的 ASP.NET 网站中,我可以在用户登录后使用会话来存储一些标志,但我想知道我可以为移动版本做同样的事情吗?这些移动设备的浏览器是否支持会话变量(或 cookie)?对移动页面进行身份验证是否也有任何标准做法?
【问题讨论】:
我正在使用 .NET 3.5 和框架附带的移动控件开发一个 ASP.NET 移动网站。我有一个登录表单,系统将在其中对用户进行身份验证,以便他/她可以访问某些受限页面。
在标准的 ASP.NET 网站中,我可以在用户登录后使用会话来存储一些标志,但我想知道我可以为移动版本做同样的事情吗?这些移动设备的浏览器是否支持会话变量(或 cookie)?对移动页面进行身份验证是否也有任何标准做法?
【问题讨论】:
会话变量存储在服务器中,因此您可以忘记设备浏览器功能。
我没有练习过为移动设备开发,但 4 年前我使用了一项使用 cookie 身份验证的服务,而手机并不是一流的,所以......我认为你可以理所当然地认为 cookie 的可用性。面向移动设备的完整未来浏览器正在兴起,因此...投资于未来,不要将精力花在即将被弃用的旧技术上...
在我看来,更喜欢 cookie 身份验证,它更标准,并且您可以将 cookie 保存在手机上以防止进一步的身份验证....
【讨论】:
您确实可以支持 cookie 身份验证,但唯一有保证的方法是将 cookie ID 作为 URL 的一部分附加,即无 cookie 会话。是的,这是不好的做法,因为它丑陋且非常不安全,而且所有现代手机都支持 cookie。
但是有些设备有 cookie 限制,而且,更重要的是,一些网络会从通过的 HTTP 标头中删除所有 cookie 信息他们的网关,即使电话没有问题(NTT DoCoMo 在日本这样做)。它可能不适用于您的情况,但需要牢记。
幸运的是,ASP.NET 确实很容易支持无 cookie 会话。在 app.config 文件中:
<sessionState cookieless="true" />
成功了。
【讨论】: