当用户登录时,我需要从ActiveDirectory中检索一些属性,例如他们的真实姓名,一些联系人等等。我会在某些形式中经常展示其中的一些字段。在我的情况下,ActiveDirectory检索速度非常糟糕,所以我想知道在登录时将这些信息存储在内存中的最佳方法是什么,然后在注销/超时后将其删除?
到目前为止我的想法: 1)存储在会话中,但是安全吗? 2)扩展User.Identity并将其存储在那里。不确定是否可能。 3)将其存储在某种全局字典中。我怎么知道他们已经注销以删除键/值对?
我在这个项目中使用MVC2,我不需要回写ActiveDirectory。
答案 0 :(得分:2)
会话对象非常常用于存储信息。如果您担心安全性,可以使用HTTPS进行通信,也可以使用状态服务器或SQL Server来存储该信息。
答案 1 :(得分:1)
只要不是大量的数据,我会把它放在会话中。看起来它非常适合会话状态。如果您使用https,则不应存在任何安全问题。
如果您担心会进入会话状态的数据量,您还可以考虑使用ASP.NET Profile Provider,但是您需要使用某种类型的机制来保持数据与AD同步(也许每次用户登录)。话虽这么说,如果不是大量的数据,我认为会话是要走的路。
答案 2 :(得分:1)
是的,因为据说您可以使用配置文件提供程序来存储数据。 我个人使用会话数据。
我认为原因:
1,数据库解决方案通过在配置文件中添加字段(作为additionalUserData =这里的数据) 使其易于使用,并且不需要很长时间来实现会话处理。
2,会话数据总是在服务器上,因为你不需要关心数据库中的数据,没有它就可以工作。 (很少有项目以这种方式完成) 它可以合理地保存并且易于访问,您可以添加到期日期。您还可以保留有关该用户的更多信息。
第3个选项: 您必须有时间戳并检查每个已过期的请求并删除此记录,在这种情况下,您必须为每个用户提供字典...
问题在于你......
希望有所帮助