我正在构建一个 ASP.Net MVC 4 应用程序。用户必须登录并根据数据库检查帐户。在这个数据库中,用户与一个或多个部门相关联。要求规定用户一次只能为一个部门使用该应用程序。
这意味着在成功登录后,我会检查用户链接到多少个部门。如果这只是一个,它将是活跃的部门。如果超过一个,我会要求用户选择其中一个,这个选择将是活动部门。此值必须在整个会话期间保持不变。
应用程序中有许多用例必须只授予对属于活动部门的数据的访问权限。这些限制应用于业务层,即不了解 ASP.Net 上下文的 C# 类库。
我怎样才能最好地坚持用户对活动部门的选择?我不太喜欢将它存储在数据库中的想法,因为它在会话之外不会持久。另一方面,在我的业务层中,我找不到任何开箱即用的持久性配置。我的 ASP.net 应用程序提供了一个 Session,但这些对于业务层来说是不可见的。
我是否应该将此值存储在 Session 中并使用 AuthenticateRequest 事件或类似的东西将活动部门传递给业务层?
有更好的选择吗?