Скрытие страниц MVC в производстве - PullRequest
2 голосов
/ 08 февраля 2012

У меня есть новое приложение MVC, которое интегрируется в уже существующий большой интранет-сайт.

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

Это означает, что мне нужен способ скрыть любую из локальных страниц входа в систему, когда решение развернуто на производственном сервере.Я пытался использовать Debugger.IsAttached для перенаправления с любой страницы входа

public class AccountController : Controller
{
    public ActionResult LogOn()
    {
        if (!System.Diagnostics.Debugger.IsAttached)
            RedirectToAction("NotFound");

        return View();
    }
}

Оказывается, это не работает.По какой-то причине, которая является для меня загадкой, страница входа по-прежнему отображается при переходе на /Account/LogOn.

Можно ли это исправить?Есть ли лучший способ?

Ответы [ 2 ]

4 голосов
/ 08 февраля 2012

Если у вас есть отдельный Web.config для производства и разработки, вы можете ограничить доступ к этому действию в Web.config производственной среды:

<configuration>
   <location path="/Account/LogOn">
      <system.web>
         <authorization>
            <deny users="?"/>
         </authorization>
      </system.web>
   </location>
</configuration>
2 голосов
/ 08 февраля 2012

Просто из любопытства, вам известен атрибут «Авторизовать»?

http://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute.aspx

Вы упоминаете, что ваше приложение является частью более крупного приложения, которое, как я полагаю, имеет дело сбезопасность (аутентификация), верно?

Если это так, в процессе разработки у вас может быть другой / конкретный файл web.config для ваших нужд.

<authentication mode="Forms">  
  <forms loginUrl="~/MyDevelopment/LogIn"/> //Just for dev
</authentication>  

Также

Вместо Debugger.IsAttached я предлагаю вам использовать директиву компилятора

#if !DEBUG
    RedirectToAction("NotFound");
#endif
...