Защита приложения ASP.NET MVC для бета-тестирования? - PullRequest
9 голосов
/ 08 января 2010

Привет всем.У меня есть приложение ASP.NET MVC, которое я собираюсь вскоре развернуть на работающем сервере.Теоретически, я хотел бы защитить приложение паролем во время бета-тестирования, не изменяя базовую кодовую базу или членство в приложении.У меня будет несколько человек бета-тестирование, поэтому обязательно, чтобы оно было доступно в Интернете.Простой сценарий:

  1. Пользователь переходит к приложению под бета-версией
  2. Возможно, HttpHandler обработает запрос и перенаправит его на промежуточную временную страницу входа, где он должен ввести бетапароль для доступа к приложению

Stackoverflow использовал аналогичную технику, когда проходил бета-тестирование.Есть идеи?

Правка для уточнения.У меня нет доступа к IIS для этого конкретного приложения, потому что я использую управляемый хост.

Ответы [ 6 ]

1 голос
/ 08 января 2010

Вы можете подключить быстрый пользовательский атрибут AuthorizeAttribute, который проверяет наличие специального файла cookie Auth. Просто украсьте свои контроллеры бета-версией и удалите их, когда будете готовы к работе.

Как-то так (PS - сделал это на лету без тестирования):

    public class BetaTestAuthorize : AuthorizeAttribute
    {
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            //if(cookie checks out ok)
                //return true;
            //else
                //httpContext.Response.Redirect("BetaLoginPage");

            return base.AuthorizeCore(httpContext);
        }
    }

Есть такой метод действия:

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult BetaLogin(string username, string password)
        {
            if(username == "whatever" && password == "whatever")
            {
                 //create custom cookie
                 return RedirectToAction("Index", "Home");
            }
            else
                return View();
        }
1 голос
/ 08 января 2010

Пара идей:

  1. Использовать проверку подлинности Windows для всего приложения / сайта в IIS
  2. Идея, которую вы упомянули, также является хорошим подходом IMO, реализация в этом случае, вероятно, будет гибкой.
0 голосов
/ 08 января 2010
  1. Используйте старый добрый RoleProvider, создайте роль Beta и проверьте ее с помощью Авторизации
  2. Создайте свой собственный AuthorizeAttribute и проверьте IP-адрес или куки .
0 голосов
/ 08 января 2010

Я бы создал простое представление входа в систему, которое устанавливает сеанс, который будет проверен на Session_Start() в вашем Global.asax файле ... Примерно так:

protected void Session_Start()
{
    if (!Convert.ToBoolean(Session["authenticated"]))
    {
        // Redirect to the login View
    }
}

Когда вы будете готовы открыть свое приложение для всех, просто удалите View и три строки кода из вашего Global.asax файла.

0 голосов
/ 08 января 2010

Я с Dhulk - использовать проверку подлинности Windows на IIS.Этот маршрут позволит вам не добавлять любой код аутентификации в ваше приложение.Чем проще, тем лучше, и я бы хотел избежать работы по внедрению системы членства, а затем un - реализовать ее.

0 голосов
/ 08 января 2010

Когда вы создаете новый проект ASP.NET MVC в Visual Studio, вы автоматически получаете AccountController, который использует базовый членство ASP.NET MembershipProvider для обеспечения механизма входа в систему.

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

Требуется настроить базу данных SQL Server для этих служб ASP.NET, но в зависимости от того, насколько вы с ней знакомы, вы можете сделать это в течение десяти минут или нескольких часов.

Когда общедоступная бета-версия заканчивается, вы можете просто отказаться от AccountController и базы данных.

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