我有一个需要Windows身份验证的网站,一旦用户认可,应用程序就会从Security.Prinicipal获取凭据问题是我的本地环境中的凭据与存储在数据库中的凭据不同,用户首选项不能获得。我正在做以下的解决方法来处理这个问题。
#if DEBUG
var myUser = userBL.GetSingle(@"desiredDomain\otherUserName");
#else
var myUser = userBL.GetSingle(HttpApplication.User.Identity.Name);
#endif
Session.Add("User",myUser);
有没有其他方式而不是模仿或上面提到的workaorund来改变HttpApplication.User.Identity.Name的值这是因为我每次需要提交到存储库或部署App时都必须更改我的代码< / p>
答案 0 :(得分:2)
虽然您可以更改userBL,但为什么不改变数据库记录以反映它们位于不同的域中。我假设您没有访问生产数据库,因此“清理”步骤应该没有问题,这使得数据库可用于开发/测试。
e.g。
UPDATE Users
SET
UserName = REPLACE(UserName, '\\ProductionDomain\', '\\DevDomain\')
答案 1 :(得分:0)
您是否考虑过在Web.Config中使用Impersonation将id设置为您的测试凭据。我认为你有一个“测试”web.config和一个“生产”web.config。通过这种方式,您无需担心在上线时将其删除。
答案 2 :(得分:0)
我之前通过将其包装在实用程序方法中来完成此操作。如果HttpContext.Current不为null,请从那里获取它。否则从WindowsIdentity.GetCurrent()获取它。