Mvc asp.net аутентификация с пользователями из webapi

#asp.net-mvc-4 #asp.net-web-api

#asp.net-mvc-4 #asp.net-web-api

Вопрос:

У меня такая ситуация:

  1. У меня есть MVC4 ASP.NET веб-сайт на первом сервере.
  2. Существует сервер WebAPI, который подключается к серверу Oracle.
  3. Пользователи приложения хранятся в Oracle db.

С чего мне начать настраивать веб-приложение? Как я уже читал, я предполагаю использовать режим аутентификации «Формы».

 <authentication mode="Forms">
  <forms loginUrl="~/Home/LogIn" timeout="2880"/>
</authentication>
  

Я видел, что есть

 FormsAuthentication.SetAuthCookie(person.UserName, false);
  

для входа в систему. Существует

 FormsAuthentication.Authenticate(...)
  

метод, который аутентифицирует пользователя.

Я полагаю, я должен каким-то образом переопределить метод аутентификации (…). В этом методе реализации будет запрашиваться WebAPIServer api, действительны ли пользователь и пароль.

Должен ли я использовать что-то вроде аутентификации CustomUser? Или, может быть, есть какое-то другое решение?

Ответ №1:

У вас есть два варианта —

Вариант 1

Вам не нужно FormsAuthentication.Authenticate(...) , потому что вы будете проверять пользователя через Web API.

Тем не менее, вам все равно нужно использовать FormsAuthentication.SetAuthCookie

Например,

 // Validate user via Web API
// ...
if (User is authenticated) {
   FormsAuthentication.SetAuthCookie(person.UserName, false);
}
  

Вариант 2

Внедрите пользовательский поставщик членства. Реализация этого занимает немного больше времени, чем вариант 1, но модель поставщика делает код намного чище, и его легко поддерживать в будущем.

Комментарии:

1. Спасибо. Я уже реализовал вариант 1 в соответствии с этим примером: vivekcek.wordpress.com/2013/06/29/… Теперь я попытаюсь написать свой собственный пользовательский поставщик членства