以下是手头的问题:我使用Razor开发了一个ASP.NET MVC3应用程序。我还实现了自定义成员资格提供程序并重写了ValidateUser()方法。在内部,我查询我的数据库并获得除密码身份验证之外的大量用户信息。
目前,我正在将此信息(即companyId)推送到类的静态属性。这有效,我可以在整个应用程序中显示/使用此信息。当用户关闭其浏览器选项卡时会出现问题。重新打开应用程序后,用户通过cookie进行身份验证,因此无需重新登录;然而,那些静态变量被吹走了。
所以男人和女孩,你怎么会/这个问题?我应该将额外的信息附加到会话cookie吗?或许是一个更好的解决方案?
答案 0 :(得分:3)
使用ASP.NET中的ProfileProvider
。
答案 1 :(得分:0)
对于应用程序级别变量,它们将受到应用程序池回收以及与从头开始的用户相关的类似“模拟”重新启动的影响。这些变量应完全独立于用户使用,并且应该能够轻松地重新创建。如果您拥有依赖于用户的变量或者在没有某种外部干预的情况下无法轻松恢复的变量,那么您肯定需要一种不同的存储方法。
如果数据是特定于用户的,那么将其存储在会话cookie中可能是最好的选择。如果数据与用户相关但分支多个用户,则应将其存储在某个数据库或平面文件中。如果数据与用户没有任何关系,那么它应该只是在数据库或配置文件中。