【发布时间】:2008-10-03 17:01:49
【问题描述】:
我有一个用户登录的内部网站。此数据保存为 cookie。从那里,用户继续他们的快乐之路。每隔一段时间,应用程序将查询身份验证记录以确定用户拥有哪些权限。
我的问题是:在需要时仅查询 cookie 以获取用户数据还是将用户信息保存在视图状态中更有效?
[编辑]如下所述,Session也是一个选项。
【问题讨论】:
标签: cookies asp.net-2.0 viewstate
我有一个用户登录的内部网站。此数据保存为 cookie。从那里,用户继续他们的快乐之路。每隔一段时间,应用程序将查询身份验证记录以确定用户拥有哪些权限。
我的问题是:在需要时仅查询 cookie 以获取用户数据还是将用户信息保存在视图状态中更有效?
[编辑]如下所述,Session也是一个选项。
【问题讨论】:
标签: cookies asp.net-2.0 viewstate
Viewstate 是特定于他们正在查看的页面的,所以一旦他们沿着他们的快乐方式前进,它就消失了。不是持久化数据的好方法。
最好的办法是使用表单身份验证,它内置在 ASP.NET 中,您还可以将任何特定于用户的信息推送到表单身份验证票证的值中。您可以在其中(加密后)获得 4000 个字节,这些字节应该包含您需要的任何内容。它还将负责允许和拒绝用户访问网站上的页面,您可以将其设置为在需要时过期。
在会话中存储是一个不可以,因为它的扩展性非常差(占用服务器上的资源),并且对于具有多个浏览器连接到同一服务器的用户来说可能会很烦人。有时这是不可避免的,但如果可以的话,你应该竭尽全力避免它。
【讨论】:
就个人而言,我更喜欢使用session 来存储东西,尽管这里的其他开发人员似乎认为这是一个禁忌。
有一个警告:您可能希望将用户的 IP 存储在会话中,并将其与用户的当前 IP 进行比较,以帮助避免会话劫持。可能这里的其他人对如何防止会话劫持有更好的想法。
【讨论】:
您可以使用会话数据 - 这样您就知道一旦将其存储在那里,用户就无法通过更改查询字符串来愚弄它。
【讨论】:
我会使用 cookie 方法。会话没问题,但在重新编译时会被 asp.net 处理掉,如果你想在会话之后保留它,你必须使用非会话 cookie。此外,如果您曾经使用过状态服务器,它本质上会做同样的事情(将会话存储在数据库中)。会话就像一个快速而肮脏的修复,真正的男人使用cookie。
【讨论】: