Asp.net mvc 登录后在何处存储用户特定的设置?

Asp.net mvc 登录后在何处存储用户特定的设置?,asp.net-mvc,asp.net-mvc-2,Asp.net Mvc,Asp.net Mvc 2,在我的ASP.NET MVC应用程序中,我允许用户登录。每个用户都与一个公司关联。公司ID和公司数据不在数据库的用户表中。用户和公司通过相关表(一对多关系)连接。Company ID不是Users表的外键,因为Users表的设计没有预测到这一点,我们不允许更改它 当用户登录时,我们希望获取该用户的公司ID并将其存储在某处。我们稍后将使用此ID按公司进行查询和其他类型的筛选,因为内容是按公司存储的 我应该在哪里存储公司ID设置以使其在许多web请求中保持不变?也许这听起来很愚蠢,但是。。将信息存储

在我的ASP.NET MVC应用程序中,我允许用户登录。每个用户都与一个公司关联。公司ID和公司数据不在数据库的用户表中。用户和公司通过相关表(一对多关系)连接。Company ID不是Users表的外键,因为Users表的设计没有预测到这一点,我们不允许更改它

当用户登录时,我们希望获取该用户的公司ID并将其存储在某处。我们稍后将使用此ID按公司进行查询和其他类型的筛选,因为内容是按公司存储的


我应该在哪里存储公司ID设置以使其在许多web请求中保持不变?

也许这听起来很愚蠢,但是。。将信息存储到对象中并将该对象放入会话中如何?

也许这听起来很愚蠢,但是。。如何将信息存储到对象中并将该对象放入会话中?

大多数人使用会话或cookie来实现这类功能:

没有比这个问题的答案更好的答案了:


大多数人使用会话或cookie来实现这类功能:

没有比这个问题的答案更好的答案了:


我看到三种可行的选择

  • 会话

  • Cookie
    这可能在身份验证cookie中,也可能不在其中,由您选择

  • 将其保存在数据库中
    根据需要进行查询。如果需要的时间少于x%,只需在需要时从数据源获取它即可


    • 我认为有三种可行的选择

      • 会话

      • Cookie
        这可能在身份验证cookie中,也可能不在其中,由您选择

      • 将其保存在数据库中
        根据需要进行查询。如果需要的时间少于x%,只需在需要时从数据源获取它即可


      我当前正在使用该会话。所以这是一种选择。我也在寻找其他选择。我目前正在使用该会话。所以这是一种选择。我也在寻找其他选择。我会投票支持“将其保留在数据库中”,仅出于性能原因。我最终决定使用会话,但为了可靠性起见,将其存储在SQL Server中。@mare-这是否比将其保存在数据库中有任何优势,如果您使用基于SQL server的会话存储?对我来说,优点是我使用aspnet_regsql在数据库中创建了两个会话表,并且在web.config中设置正确的连接字符串时,我能够使用内置的SQL会话状态提供程序,从而避免了为会话编写一行代码管理。@RafaelMerlin:这实际上归结为你打算如何使用它。如果用户仅与单个公司关联,则应将其保存在数据库中,以促进安全性。如果一个用户与多个公司关联,但能够选择一个公司与之合作,那么您可能希望将该选择存储在cookie或会话中。。。同时确保用户在每次查询时仍然可以访问该公司。这将允许您拥有多个浏览器、同一个用户,并且能够让不同的公司启动。我会投票支持“将其保留在数据库中”仅出于性能原因。我最终决定使用Session,但为了可靠性起见,将其存储在SQL Server中。@mare-这是否比将其保存在数据库中有任何优势,如果您使用基于SQL server的会话存储?对我来说,优点是我使用aspnet_regsql在数据库中创建了两个会话表,并且在web.config中设置正确的连接字符串时,我能够使用内置的SQL会话状态提供程序,从而避免了为会话编写一行代码管理。@RafaelMerlin:这实际上归结为你打算如何使用它。如果用户仅与单个公司关联,则应将其保存在数据库中,以促进安全性。如果一个用户与多个公司关联,但能够选择一个公司与之合作,那么您可能希望将该选择存储在cookie或会话中。。。同时确保用户在每次查询时仍然可以访问该公司。这将允许您拥有多个浏览器、同一个用户,并且能够让不同的公司启动。