ASP.NET формирует аутентификацию - автоматический вход с тестовой учетной записью при отладке?

У меня есть веб-приложение, в котором используются поставщики членства и роли asp.net, позволяющие учетным записям, являющимся членами определенных ролей, иметь доступ к различным страницам в зависимости от назначения ролей.

Во время отладки я бы хотел, чтобы приложение автоматически входило в систему с тестовой учетной записью, чтобы я мог проверять функциональность назначений ролей и не нуждаться в вводе учетных данных на странице входа в систему каждый раз. Есть простой способ сделать это?

7 ответов

Решение

Этот код делает работу. В событии Page_Load в Login.aspx:

    Membership.ValidateUser("<userName>", "<password>")
    FormsAuthentication.RedirectFromLoginPage("<userName>", True)

Документация MSDN

Замечания: Membership использует System.Web.Security ссылка.

Джефф прав, вы можете сделать это с помощью метода global.asax:

protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
   if(System.Diagnostics.Debugger.IsAttached && User == null)
   {
       FormsAuthentication.SetAuthCookie("dmike", false);
   }
}

ура

В методе Application_AuthenticateRequest (также называемом событием Applications AuthenticateRequest) в файле global.asax добавьте код, который проверяет, запускаете ли вы сайт в отладчике (что-то вроде system.Diagnostics.Debugger.IsAttached) и, если да, имейте его создайте заявку на вход, создайте cookie и прикрепите его к сеансу. Библиотека FormsAuthentication предоставляет то, что вам нужно, если у провайдера членства его нет.

В качестве альтернативы существуют также такие инструменты, как Selenium IDE, которая является плагином для Firefox. Его основная цель - предоставить какое-то тестирование для пользовательского интерфейса. Для этого вы можете записывать действия, которые выполняются в пользовательском интерфейсе. Что вы можете сделать, это записать учетные данные, которые вы вводите для тестового пользователя, и сохранить их. В следующий раз, когда вы вернетесь, вы выполните сценарий, который автоматически заполняет необходимую информацию.

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

Не могли бы вы просто вставить код в событие загрузки, чтобы установить строки имени пользователя и пароля и запустить событие onclick кнопки входа в систему?

В событии page_load вы можете использовать FormsAuthentication.SetAuthCookie:

FormsAuthentication.SetAuthCookie("username", false);

FormsAuthentication.RedirectFromLoginPage использует defaultUrl, чтобы решить, куда перенаправить после входа в систему. Поэтому убедитесь, что у вас есть правильный URL-адрес, отличный от вашего LoginPage.aspx.

FormsAuthentication.RedirectFromLoginPage("userName", True);

<authentication mode="Forms">
    <forms loginUrl="~/Account/Login.aspx"
                 ...
                 defaultUrl="~/AnyFolder/PageAfterLogin.aspx"
                 ... />
</authentication>

Надеюсь, это немного поможет.

Другие вопросы по тегам