asp.net mvc - 在哪里存储用户ID - 整数?

问题描述:

我得到了使用会话变量的氛围是有点在ASP.NET MVC中看不起。asp.net mvc - 在哪里存储用户ID - 整数?

一旦用户登录时,我想保留用户的用户id,这样我就不必查询它所有的时间等

什么是最有效的方式做,在ASP.NET MVC ?

我已经看到类似的问题偶尔会弹出一次,我不知道这个“氛围”来自哪里。 Session是专门为此设计的 - 用于存储会话相关信息。使用Session存储用户ID或类似信息绝对没有错。

+0

谢谢! *评论填充*。 – 2010-02-15 00:34:19

+2

氛围来自人们错误地使用会话作为身份验证,这正是progtick正在做的事情。 – jfar 2010-02-15 07:14:59

+1

我认为会员资格/配置文件提供商为您处理了所有这些,其使用受到了Microsoft的鼓励。他们甚至在示例应用程序中包含一个示例。 – 2010-02-15 13:40:37

会话状态。不合适时不应使用它。但没有其他任何东西可以用于凭证。只要确保它们是可序列化的,以便您可以在需要时将会话推出进程。

+1

“但没有其他的东西可以用于凭证”什么?像Cookie和FormsAuthentication? Cookies比Session更稳定1000%。 – jfar 2010-02-15 07:05:19

+0

为什么你不能检查一个会话,并让用户再次登录,如果它不可用?我不太理解为什么cookies更好。 – 2010-02-15 17:42:51

+0

而我不是在争吵 - 我真的很想听到更多关于此的信息。 – 2010-02-15 17:43:50

会话旨在用于有状态的用户交互 - 一个购物车的想法。他们被看不起,因为他们很难测试,并倾向于将序列化逻辑强制到控制器中。如果你只是想尽量减少查询,你应该使用缓存。

编辑: 对于HttpContext.Cache教程是惊人的很难。 Steven Sanderson在Pro ASP.net MVC框架(Apress 2009)第4页中有约4页。 530-534。

Caching in asp.net-mvc也许会给你一些提示。

+0

你可以发布一个链接到asp.net mvc缓存吗? – TPR 2010-02-15 06:35:25

你得到了正确的氛围。这在许多情况下都不是必需的。会话状态很容易丢失,经常被滥用于处理登录用户(通过设置Session [“IsLoggedIn”] = true或通过检查Session [“User”]!= null,突然Session消失并且用户已注销),则应使用表单身份验证。在这里,你可以阅读有关窗体身份验证和存储附加数据与它:

Forms Authentication Configuration and Advanced Topics

如果你仍然想使用会话,这是好事,创建包装,使之更容易测试和代码摆脱字符串:

Wrapper for ASP.NET Session

+0

您不会使用表单验证,然后将用户名等存储在会话中吗? – 2010-02-15 02:06:01

+1

@ d03boy:默认情况下,用户名存储在表单身份验证cookie中。您可以添加用户的ID。如果你失去了会话(并且在很多情况下会发生这种情况,例如有人改变了web.config),你可以将数据放在安全的地方,而不必重建它。好的,您可以使用会话,但请记住,用户登录时可能会丢失会话。 – LukLed 2010-02-15 02:24:30