将表单用户传递给 SQL 数据库
Pass forms user to SQL Database
我有一个基于 Vs2015 标准模板的 MVC WebApp。我正在使用表单身份验证
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
以及具有集成安全性的 localDB:
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-test;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-test.mdf" providerName="System.Data.SqlClient" />
对于 SQL 数据库中的触发器,我想访问当前通过表单登录到 WebApp 的用户。但是,SQL system_user
returns 我当前的 Windows 登录。是否有任何最佳实践方法来访问通过数据库中的表单登录到 WebApp 的用户?
我看了很多关于冒充的文章。但是,他们似乎都有相反的问题:他们想在数据库中显示 Windows 用户。
我可以使用模拟来传递表单用户吗?或者有没有办法将当前 WebApp 用户传递给禁用集成安全性的连接字符串?
我发现的最佳方法是使用 SET CONTEXT_INFO
,它完全符合我的要求。这样做的缺点是需要将当前用户 ID 传递给存储库中的每个函数,因为我没有找到一种方法将其自动传递给连接(构造函数)。
如果我找到将用户从控制器传递到模型容器的方法,我将更新此答案。
我有一个基于 Vs2015 标准模板的 MVC WebApp。我正在使用表单身份验证
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
以及具有集成安全性的 localDB:
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-test;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-test.mdf" providerName="System.Data.SqlClient" />
对于 SQL 数据库中的触发器,我想访问当前通过表单登录到 WebApp 的用户。但是,SQL system_user
returns 我当前的 Windows 登录。是否有任何最佳实践方法来访问通过数据库中的表单登录到 WebApp 的用户?
我看了很多关于冒充的文章。但是,他们似乎都有相反的问题:他们想在数据库中显示 Windows 用户。 我可以使用模拟来传递表单用户吗?或者有没有办法将当前 WebApp 用户传递给禁用集成安全性的连接字符串?
我发现的最佳方法是使用 SET CONTEXT_INFO
,它完全符合我的要求。这样做的缺点是需要将当前用户 ID 传递给存储库中的每个函数,因为我没有找到一种方法将其自动传递给连接(构造函数)。
如果我找到将用户从控制器传递到模型容器的方法,我将更新此答案。