我希望有人可以帮助我了解当我尝试实现自定义 MembershipProvider 时发生的事情。这可能更像是一个理论问题而不是代码问题......这就是我所拥有的:
- MVC 2 应用程序(从一个空的 MVC 2 项目开始)
- 带有我自己的“用户”表的 SQL Server DB
- 一个用户类,UserRepository,UserService,等等等等
目前,我的应用程序通过 UserRepository 进行身份验证,如果成功则返回一个 User 对象。然后,此用户对象存储在会话中,随后被所有需要身份验证的控制器操作询问。
现在...我知道将它存储在会话中会使我容易受到会话劫持,并且更安全的方法是实现我自己的 MembershipProvider。我不明白的是,这个自定义 Provider 最终会在哪里存储我的 User 对象?我看到被覆盖的 ValidateUser() 方法只返回一个布尔值,但我无法弄清楚该用户在网站上的时间该信息在何处保留。
我真的很想保留我现有的流程,同时通过消除对用户身份验证会话的依赖来使其更加安全。一旦用户登录,我喜欢在整个应用程序中拥有一个完整的用户对象,但我愿意接受其他建议。似乎很多 MembershipProvider 文档有点像黑匣子。我希望有人可以解释它实际上在做什么来坚持用户身份验证。
提前致谢