将用户身份从UI传递到数据层

时间:2011-06-01 10:28:45

标签: c#

为了在SQL 2008数据库上执行审核以进行更新/插入/删除,我正在访问

HttpContext.Current.User

在数据层中传递给存储过程,该过程将为审核触发器设置CONTEXT_INFO。

这些可能是错误的,因为如果我想放置另一个UI(即WinForms),HttpContext将不适用,但我不想在我的BLL方法中添加用户名参数或添加构造函数,因为所有这些方法都是静态的。在DAL中访问用户身份的最佳方法是什么?

1 个答案:

答案 0 :(得分:3)

您应该使用静态Thread.CurrentPrincipal属性。但请注意,此属性可能不等于HttpContext.Current.User,具体取决于您的Web应用程序的模拟设置。

一个好的解决方案可能是首先检查HttpContext.Current是否为空。如果不是,那么从那里读取用户,否则回退到阅读Thread.CurrentPrincipal