0

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

Я сделал некоторые исследования, и я обнаружил, что предыдущие версии 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 теперь obsolete.
  2. FormsAuthentication.RedirectFromLoginPage перенаправляет пользователя напрямую, а не возвращает RedirectResult. Это не соответствует конвейеру контроллера MVC, и поэтому такие вещи, как модульное тестирование, будут более сложными.

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

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

ответ

1

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

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

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

+0

Спасибо за отзыв, я прочитаю больше о членстве в ASP.NET. Тогда я ищу «MemberhipProvider», который аутентифицируется из какого-то локального источника. –

+0

@ScottWegner - не уверен, что вы подразумеваете под «местным источником». Если вы имеете в виду локальную базу данных, то вы, безусловно, можете использовать LocalDB или локальную базу данных SqlServer или Sql Server Express, и они отлично работают с SqlMembershipProvider (старый поставщик по умолчанию, но все еще работает). –

+0

«Местный источник», я имею в виду источник из моего веб-проекта. Например, в файле web.config. Мне никогда не понадобится больше одного входа, поэтому я хочу избежать управления учетными данными в базе данных. –

Смежные вопросы