我使用会话来跟踪用户在现场 - 有更好的方法

时间:2012-01-15 12:29:33

标签: asp.net-mvc asp.net-mvc-3 session session-state

我有一点架构问题。
在我的网站上,用户可以注册,当他们根据用户ID登录网站时,我将用户重定向到他的个人资料页面(如facebook)。
用户可以从此页面点击列表中的其他用户并转到他的个人资料页面 当用户进入他的朋友个人资料页面时,他可以访问该页面上的一些链接,以查看有关此朋友的更多信息(如他的朋友列表,图像,信息等)。
所以我现在正在做的是当用户点击他的朋友时我在Session中保存了friendID。 后来当我需要访问某些内容时,我首先从会话中获取数据然后去 我想知道这种做法是好还是坏? 它有效,但我想知道有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

恕我直言,这不是一个好的设计。这就像使用全局变量来引用“当前朋友”。显然,这使得无法通过打开另一个浏览器选项卡或窗口中的“朋友信息”页面,一次查看有关两个不同朋友的信息。

它还将“朋友信息”页面耦合到“朋友列表”页面。这意味着任何其他想要链接到好友信息页面的页面都必须将好友ID放在会话中,并且您不得不通过其中一个页面查看好友信息。如果用户为好友信息页面添加书签,关闭他的会话,重新打开一个会话,并使用他的书签,则会失败。

最后,它使应用程序有状态,而通过使用friendInfo?friendId=<the friend ID>等链接将“朋友列表”页面简单地链接到“朋友信息”页面,它可以保持无状态。