【发布时间】:2012-10-17 15:02:35
【问题描述】:
我想在 Android 中制作一个登录应用程序。
项目的要求是使用cookie将用户名和密码存储两天。
可以使用cookies吗?如果是,那么如何?可以给我代码吗?
注意:我不能使用网络视图。
【问题讨论】:
-
您永远不应该将密码存储在 cookie 中。
-
在你的问题中,它的服务器cookie是问题,而不是android。
我想在 Android 中制作一个登录应用程序。
项目的要求是使用cookie将用户名和密码存储两天。
可以使用cookies吗?如果是,那么如何?可以给我代码吗?
注意:我不能使用网络视图。
【问题讨论】:
正如评论者已经说过的,您不应该将密码(即使是加密形式)存储在 cookie 中。您可以存储的是会话 ID。当用户登录应用程序时,应用程序会为他/她生成一个会话 ID,该会话 ID 将保持两天有效。在您向应用程序发出的每个请求中,都将会话 ID 添加为 HTTP 标头。
您可以将会话 ID 和发出它的日期时间存储在首选项中。当用户需要向应用发出新的请求并且会话尚未过期时,您可以读取存储的值。
【讨论】:
如果您不希望将其集成到浏览器中,请尝试一下。
如果查看 HTTP 协议,您可以看到 cookie 是由客户端在请求中以纯文本形式发送的。这意味着您应该让您的应用程序在您每次请求页面时交付它们。这对仅限本地的 cookie 无效,但我认为您对这些不感兴趣。如果您想从服务器端设置 cookie,则必须调整您的应用程序以解析响应并查找 cookie。 (也是 HTTP 协议)
为了更好地查看您需要发送或接收的原始数据,您可以使用 Wireshark 或类似工具监控您的流量,并查看请求/响应的样子。
我目前正在开发一个需要在 iPhone 上实现的网络服务,这是我的第一个想法。我还没有实现这个(我的网络服务还没有完成),所以目前我不能告诉你更多。
Edit: 一个有用的页面可能是位于此处的 Wikipedia HTTP Cookie 页面。
【讨论】:
local-only cookies,你能提供更多信息吗?也许我正在寻找类似的东西
正如 Reno 所说,尽量避免将密码存储在 cookie 中。相反,您应该让服务器在登录时生成一个 sessionID,并让这个 ID 在两天后在服务器上过期。因此,您可以使用登录一次生成的用户名和 sessionID 登录。
如果你想要,你可以将 sessionID 存储在 cookie 中。
【讨论】: