Я думаю, что нашел решение своей проблемы.Я решил поработать с некоторыми образцами в гл.7 из Начало ASP.NET Security Барри Дорранса (опубликовано Wrox) в надежде, что работа с аутентификацией и авторизацией в простых примерах может привести к решению, и оно имело место.
Один изПримеры использования проверки подлинности с помощью форм (стр. 155-157) показали простую страницу login.aspx, похожую на мою страницу запуска разработки.Код, который был у меня на начальной странице разработки (показан выше), был неверным.Это должно было быть:
FormsAuthentication.Authenticate(simUserName, simUserPassword)
FormsAuthentication.RedirectFromLoginPage(simUserName, False)
Я также определил своих смоделированных пользователей в моем файле разработки web.config:
<authentication mode="Forms">
<forms defaultUrl="default.aspx" loginUrl="mystart.aspx">
<credentials passwordFormat="Clear">
<user name="GeorgeWashington" password="password"/>
<user name="AndrewJackson" password="password"/>
<user name="AbrahamLincoln" password="password"/>
<user name="TeddyRoosevelt" password="password"/>
<user name="JackKennedy" password="password"/>
</credentials>
</forms>
</authentication>
Когда вызывается FormsAuthentication.Authenticate и проверяет подлинность, кто когда-либо из имитированных пользователейЯ выбираю, похоже, это заставляет ASP.NET теперь всегда использовать это имя пользователя в вызовах к поставщику ролей.По крайней мере, похоже, что это работает при отладке веб-сайта.
Я настроил проект так, чтобы он всегда вызывал мою стартовую страницу разработки (страница входа - mystart.aspx).Таким образом, я всегда начинаю с новой аутентификации, если мне нужно работать с другой ролью.
Любой, кто хочет использовать это решение, ПРЕДУПРЕЖДЕНИЕ : запуск вашей разработкистраница НИКОГДА не должна использоваться для веб-сайта Production .Аналогично, НИКОГДА не используйте имена пользователей и пароли в файле web производства .config.Это ТОЛЬКО для отладки и тестирования.В зависимости от того, как вы управляете версией кода разработки и производства, вам может потребоваться вручную объединить некоторые изменения, переходящие от разработки к производству, чтобы избежать отправки этого кода отладки в Production.
Я также понимаю, что Microsoft хочет, чтобы мы использовалиПоставщик членства вместо класса FormsAuthentication.И в производственном коде мы должны.Но для моих целей (обеспечение того, чтобы я мог взаимодействовать с веб-сайтом с разными пользователями / ролями во время отладки), это, кажется, самое простое решение.
РЕДАКТИРОВАТЬ - еще одна часть головоломкиЯ все еще получал странные вызовы методов в моем провайдере пользовательских ролей.Несколько раз вызывался метод с именем пользователя, с которым я вошел на мою страницу входа (это то, что я ожидал);чаще всего это было мое имя пользователя Windows, которое заставило меня поверить, что ASP.NET где-то все еще использует авторизацию Windows.После дополнительных исследований (спасибо ТАК !!!) я обнаружил, что в моем файле applicationhost.config для моего проекта для проверки подлинности Windows было установлено значение True, которое, как мне кажется, вызывало конфликт с моим файлом web.config.Установка значений в applicationhost.config на:
<location path="MyWebSite">
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="true" />
<windowsAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
</location>
, похоже, решила эту проблему.
Если у вас есть какие-либо вопросы или вам нужна дополнительная информация, пожалуйста, дайте мне знать.