Как я могу получить доступ к своему собственному API с моего сайта MVC? - PullRequest
0 голосов
/ 14 марта 2012

вот мои настройки:

У меня есть сайт MVC3, размещенный с поддоменом www (например, www.example.com). Мой сайт защищен с помощью SSL и аутентификации по формам при поддержке поставщиков членства / роли ASP.NET. У меня есть HTTP-обработчики, предоставляющие сервисные возможности в разделе / ​​services (например, www.example.com/services). Они защищены с помощью обычной аутентификации по SSL. У меня есть мобильные устройства, которые успешно получают / пользуются этими услугами. Я также создал новый сайт с поддоменом API (например, api.example.com), который будет моим общедоступным API. Эти сервисы в настоящее время доступны через предварительный просмотр WCF Web API 6 (в конечном итоге, для перехода на ASP.NET Web API). Эти сервисы также защищены с помощью обычной аутентификации по SSL. Моя реализация членства в ASP.NET хранит хешированные пароли (то есть они не зашифрованы). Все сервисы обслуживают ответы JSON. Все это прекрасно работает.

Вот моя дилемма:

Я начал писать новое представление на сайте MVC и понял, что было бы здорово использовать Ajax. Мой конкретный случай заключается в реализации каскадных раскрывающихся списков. Я хотел реализовать это, используя jQuery и новый сервис в поддомене api. Сначала я думал, что это будет простое упражнение, а потом понял, что у меня нет эффективного способа вызвать свой собственный API. Все мои клиенты (мобильные устройства) хранят свои имена пользователей и пароли локально, поэтому это легко. Однако, если один и тот же пользователь вошел на мой сайт, у меня есть его имя пользователя, но не пароль, поэтому у меня нет прямого доступа к любым услугам, предлагаемым в поддомене api.

На мой взгляд, у меня есть три решения:

  1. Реализация сервисов, поддерживающих сайт MVC, непосредственно в URI / services, исключая использование моего собственного публичного API.
  2. Создайте суперпользователя в моем членском магазине (где я знаю имя пользователя / пароль), который сайт использует для доступа к службам в поддомене api.
  3. Измени мою стратегию аутентификации.

Мне приходит в голову, что я, вероятно, не должен использовать свой собственный публичный API, и мне лучше будет использовать мои собственные частные сервисы (что нормально, поскольку вся логика используется совместно с фасадным слоем).

Какая здесь рекомендуемая стратегия? Я также предполагаю, что если бы я использовал вариант 2 или 3, я бы сделал это, используя JSONP. Это правильно?

Любой совет будет принят с благодарностью. А если потребуется более подробная информация, пожалуйста, напишите, и я буду обновлять с ответами.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 16 марта 2012

Для простоты и потому, что я решил, что не в моих интересах использовать собственный публичный API, я реализовал действия JsonResult на новом контроллере в существующем сайте MVC. Это позволило мне использовать аутентификацию существующих форм и избежать междоменных запросов ajax.

0 голосов
/ 14 марта 2012

Если я правильно следую этому, вам просто нужно убедиться, что ваш cookie-файл Forms Auth записан без субдомена, поэтому он будет выглядеть так:1001 *

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

...