Как изменить HttpApplication.User.Identity.Name в локальной среде? - PullRequest
0 голосов
/ 28 октября 2008

У меня есть сайт, требующий проверки подлинности 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);

существует ли какой-либо другой способ, кроме олицетворения или вышеупомянутого метода работы, для изменения значения HttpApplication.User.Identity.Name, это потому, что мне приходится менять свой код каждый раз, когда мне нужно зафиксировать в репозитории или развернуть приложение

Ответы [ 3 ]

2 голосов
/ 29 октября 2008

Хотя вы можете изменить userBL, почему бы вам не изменить записи базы данных, чтобы отразить, что они находятся в другом домене. Я предполагаю, что вы не обращаетесь к производственной базе данных, поэтому не должно быть проблем с этапом «очистки», который делает базу данных пригодной для использования в dev / test.

, например

UPDATE Users 
SET 
    UserName = REPLACE(UserName, '\\ProductionDomain\', '\\DevDomain\')
  1. использование #if DEBUG плохо для такого рода вещей. Кто-то может / должен законно загрузить отладочную версию кода в производственную среду, и внезапно логины не работают. Эти вещи лучше контролировать в web.config, когда они необходимы.
  2. Разработчики должны работать с dev-копией базы данных. При копировании очень типично санировать некоторые аспекты базы данных. Иногда это касается правил конфиденциальности (например, скрытие реальных имен и имен пользователей)
0 голосов
/ 28 октября 2008

Я делал это раньше, оборачивая это в служебный метод. Если HttpContext.Current не является нулевым, получите его оттуда. В противном случае получите его из WindowsIdentity.GetCurrent ().

0 голосов
/ 28 октября 2008

Рассматривали ли вы использование Impersonation в Web.Config для установки идентификатора ваших тестовых учетных данных. Я бы предположил, что у вас есть «test» web.config и «production» web.config. Таким образом, вам не придется беспокоиться об удалении, когда вы начнете жить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...