代码之家  ›  专栏  ›  技术社区  ›  Oscar Cabrero

如何在本地环境中更改httpapplication.user.identity.name?

  •  0
  • Oscar Cabrero  · 技术社区  · 17 年前

    我有一个需要Windows身份验证的站点,应用程序从安全性获取凭据。一旦用户被身份验证,问题是我在本地环境中的凭据与存储在数据库中的凭据不同,并且无法获取用户首选项。为了解决这个问题,我正在进行以下变通。

        #if DEBUG
          var  myUser = userBL.GetSingle(@"desiredDomain\otherUserName");
        #else 
           var myUser = userBL.GetSingle(HttpApplication.User.Identity.Name);
        #endif
            Session.Add("User",myUser);
    

    是否有其他方法而不是模拟或上述WorkaRund来更改httpapplication.user.identity.name的值?因为每次需要提交到存储库或部署应用程序时,我都必须更改代码。

    3 回复  |  直到 17 年前
        1
  •  2
  •   Robert Paulson    17 年前

    虽然可以更改userbl,但为什么不改为更改数据库记录以反映它们在不同的域中。我假设您没有访问生产数据库,所以“清理”步骤应该不会有任何问题,使数据库可用于开发/测试。

    例如

    UPDATE Users 
    SET 
        UserName = REPLACE(UserName, '\\ProductionDomain\', '\\DevDomain\')
    
    1. 使用如果调试对这类事情不好。有人可以/应该在生产环境中合法地加载调试版本的代码,所有突然登录都会中断。当需要这些东西时,可以在web.config中更好地控制它们。
    2. 开发人员应该使用数据库的开发人员副本。在进行复制时,清理数据库的某些方面是非常典型的。有时这是为了隐私规定(例如,隐藏用户的真实姓名和登录名)
        2
  •  0
  •   Brian Lee    17 年前

    您是否研究过在web.config中使用模拟将ID设置为测试凭据。我假设您有一个“test”web.config和一个“production”web.config。这样一来,你就不用担心在上线时把它取下来了。

        3
  •  0
  •   Rob    17 年前

    我以前用一个实用方法包装过它。如果httpContext.current不为空,则从中获取。否则从windowsIdentity.getcurrent()获取。