Аутентификация на основе конфигурации в ASP.NET MVC4

У меня есть веб-страница ASP.NET MVC4, доступ к которой по большей части осуществляется без аутентификации. Есть одна страница, которую я хочу защитить для доступа только администратора (журнал ошибок ELMAH, в частности). Поскольку мне требуется только один вход администратора, я бы хотел избежать сложности ведения базы данных пользователей и паролей.

Я провел некоторые исследования и обнаружил, что предыдущие версии ASP.NET предоставляют возможность использовать проверку подлинности с помощью пароля, зашифрованного в файле web.config:

<forms loginUrl="Admin" name=".ASPXFORMSAUTH">
  <credentials passwordFormat="SHA1">
    <user name="admin" password="encryptedPassword" />
  </credentials>
</forms>

Затем контроллер аутентификации использует FormsAuthentication.Authenticate а также FormsAuthentication.RedirectFromLoginPage проверить введенные учетные данные. Однако я не решаюсь использовать это решение, потому что:

  1. FormsAuthentication.Authenticate API сейчас устарел.
  2. FormsAuthentication.RedirectFromLoginPage будет перенаправлять пользователя напрямую, а не возвращать RedirectResult, Это не следует конвейеру контроллера MVC, поэтому такие вещи, как модульное тестирование, будут более сложными.

Просматривая примеры MSDN и шаблон по умолчанию, кажется, что WebMatrix WebSecurity.Login API - это новый стандарт для проверки подлинности с помощью форм в приложениях MVC. Но я не нашел способа использовать локальный (т.е. на основе конфигурации) провайдер аутентификации.

Есть ли рекомендуемый способ локальной проверки подлинности, или это считается плохой практикой? Какой самый простой способ обеспечить проверку подлинности администратора без внешних зависимостей?

1 ответ

Решение

WebSecurity.Login не является "новым стандартом" для аутентификации. Это больше похоже на новый "дружественный новичку стандарт". WebSecurity действительно поддерживает только SimpleMembership, и это действительно просто для простых приложений.

FormsAuthentication.Authenticate долгое время не был хорошим выбором, поэтому тот факт, что он сейчас официально объявлен устаревшим, не имеет большого значения.

В любом случае вам, вероятно, следует использовать членство и использовать Membership.ValidateUser для проверки учетных данных. Или используйте что-то вроде Windows Identity Foundation.

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