2013-05-17 2 views
0

Итак, я с удовольствием создаю приложение ASP.Net MVC 4 уже месяц. У меня есть модель безопасности, пользователи могут регистрироваться и защищать информацию, хранящуюся в сеансе пользователей для последующих запросов к странице. Все это прекрасно работает. Затем я реализую некоторые вызовы ajax для получения дополнительных данных на странице. Я делаю это, обращаясь к интерфейсу веб-API. В вызове Web API я пытаюсь получить доступ к сеансу, а low и behold Session - null. Теперь я понимаю, что веб-API должен быть «без гражданства». Все параметры для вызова веб-api должны быть переданы. Но что, если некоторые из этих параметров чувствительны и не могут быть переданы от клиента при выполнении вызова ajax?ASP.Net MVC 4, веб-API и безопасные параметры передачи

Я прочитал про хаки, чтобы получить доступ к сеансу в WebAPI. Я бы предпочел не делать этого и нарушать арендаторов веб-апи. ? Значит, вы храните эту информацию в базе данных и вытаскиваете ее в веб-ави-вызове? Похоже, что это PITA. Итак, как бы сохранить определенные параметры при создании веб-айакс-айакс? Или вы ломаетесь и получаете доступ к сеансу?

ответ

0

Каждый служебный вызов может принимать идентификатор пользователя.

Метод контроллера WebAPI использует идентификатор пользователя для поиска дополнительных данных, таких как поиск чувствительных деталей заказа.

0

Как я сделать это наследуется от базового класса, и это базовый класс имеет следующее:

public string UserName 
    { 
     get 
     { 
      return User.Identity.Name; 
     } 
} 

WebAPI может видеть эту UserName и каждый UserName уникален, так что вы можете сделать поиск пользователя основанный на этой переменной.

Если вы хотите отправить какие-либо дополнительные данные в WebAPI, вам придется отправить, скажем, идентификатор контроллера и проверить его на имя пользователя, чтобы узнать, есть ли у него доступ к нему.

Psuedo ...

Я хочу политику!

стороне клиента

  • Посылает Policy ID (1234 WebAPI, бессмысленные для хакера, если они не могут получить информацию от него)
  • Этот идентификатор сверяются Пользователь.Идентичность.Имя, чтобы увидеть если информация может быть получена
+0

Я понимаю, что вы говорите, и это можно сделать с помощью кучи дополнительной работы, чтобы сначала записать данные сеанса в базу данных с помощью неописуемого ключа, а затем вытащить данные обратно в Интернете api, используя тот же ключ. Кажется, что больше, чем когда я хочу получить данные, уже в сеансе. Почему R/W в базе данных делает его апатридом, но R/W для сеанса не является? –

+0

Overkill будет передавать данные через уже имеющиеся в db. API должен быть неактивным, если вы хотите, чтобы все методы были связаны с сеансом пользователя, тогда используйте структуру сущности, а не модель API – Eamon

+0

@MikeMurphy, безусловно, ваши данные хранятся в базе данных и могут быть доступны по идентификатору, отправленному из приложения к веб-API, так что вы можете загрузить эту резервную копию из базы данных из вашего API? Это ужасная практика держать данные в большом количестве сессий в любом случае. –

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