我有一个用户登录的内部网站。此数据保存为cookie。用户从那里开始他们的快乐方式。应用程序经常会查询身份验证记录以确定用户拥有的权限。

我的问题是:在需要时只查询用户数据的cookie或者在viewstate中保存用户信息是否更有效?

[编辑]如下所述,Session也是一个选项。

有帮助吗?

解决方案

Viewstate特定于他们正在查看的页面,因此一旦他们以愉快的方式进行,它就会消失。不是持久保存数据的好方法。

您最好的选择是使用表单身份验证,它内置于ASP.NET,您还可以将任何特定于用户的信息推送到表单身份验证故障单的值。你可以获得4000字节(加密后),它应该包含你需要的任何东西。它还将负责允许和拒绝用户访问网站上的页面,您可以根据需要将其设置为过期。

在会话中存储是禁忌因为它非常糟糕地扩展(占用服务器上的资源),并且对于具有到同一服务器的多个浏览器连接的用户来说可能是烦人的。它有时是不可避免的,但如果可以的话,你应该尽力避免它。

其他提示

就个人而言,我更喜欢使用会话存储东西,虽然这里的其他开发人员似乎认为这是禁止的。

有一点需要注意:您可能希望在会话中存储用户的IP并将其与用户的当前IP进行比较,以帮助避免会话劫持。可能这里的其他人对如何防止会话劫持有更好的了解。

您可以使用会话数据 - 就像您知道的那样,一旦您将其存储在那里,用户就无法通过更改查询字符串来愚弄它。

我会使用cookie方法。会话没问题,但是在重新编译时由asp.net处理,如果你想在会话后继续使用会话,你必须使用非会话cookie。此外,如果您使用状态服务器,它基本上做同样的事情(在数据库中存储会话)。会话就像一个快速而肮脏的解决方案,真正的男人使用cookies。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top