Generics 在登录时存储ASP.NET MVC 2会话数据

Generics 在登录时存储ASP.NET MVC 2会话数据,generics,session,asp.net-mvc-2,strong-typing,Generics,Session,Asp.net Mvc 2,Strong Typing,我有一个类似的实现: 为了快速访问经常需要的用户数据。。。但我有两个问题: 1) 是否曾经有过用户登录但会话无效或重置的情况?我一直认为只要用户登录,他们的会话就有效 2) 我想在用户登录时填充数据,但我不知道如何在登录时访问该数据。AccountController中有一个登录方法,但尽管有一个FormsService.SignIn方法,但我看不到它在用户中的实际登录位置,因为Membership.GetUser()在页面重定向之前返回null 我猜我这样做是错误的,我不应该尝试创建一个通用方

我有一个类似的实现:

为了快速访问经常需要的用户数据。。。但我有两个问题:

1) 是否曾经有过用户登录但会话无效或重置的情况?我一直认为只要用户登录,他们的会话就有效

2) 我想在用户登录时填充数据,但我不知道如何在登录时访问该数据。AccountController中有一个登录方法,但尽管有一个FormsService.SignIn方法,但我看不到它在用户中的实际登录位置,因为Membership.GetUser()在页面重定向之前返回null

我猜我这样做是错误的,我不应该尝试创建一个通用方法来检索会话,而是将各个方法映射到会话值,如果它们为null,则从用户数据手动重新填充它们

你觉得怎么样

  • 会话和身份验证之间有区别。会话在整个应用程序中都可用,即使用户未登录
  • 在默认的ASP.NET MVC 2.0项目模板中,您可以在调用
    FormsService.SignIn
    后立即填充会话数据。这是验证用户凭据并将身份验证cookie写入响应的地方。如果需要,可以使用提供的用户名从数据库中获取任何用户信息

  • 但是,如果会话以某种方式被破坏(例如web.config文件被更改),用户将保持登录状态,但存储在SignIn中的会话数据将消失。如果可能的话,让某个服务/类尝试从会话数据中检索,但如果不能,则返回到数据库并将数据恢复到会话数据,这是一种更好的方法吗?