2016-01-21 4 views
1

У меня есть опыт в веб-разработке, но я очень новичок в мире мобильных устройств. Таким образом, я не уверен, как поступить в этой ситуации:Сохраняет ли сервер сеанс мобильного запроса?

  • пользователь Войти в приложение
  • учетные данные отправляются на сервер через запрос POST.
  • Если ответ в порядке, он перенаправляется на основное действие.

Теперь, я хочу знать, должен ли я хранить идентификатор пользователя или нет. Я знаю, что когда мы используем браузер, сервер сохраняет «сеанс», поэтому клиенту не нужно отправлять идентификатор каждый раз, чтобы запрашивать данные. Это верно и для мобильных приложений (Android)?

Кстати, я также отвечаю за создание REST API, но у меня нет никакого таргетинга на мобильные устройства.

ответ

2

Большой вопрос для ответа, и это зависит от того, какой серверной технологии вы используете, и не уверены. Однако я могу описать реализованный мной подход (фон .Net).

Кажется, вы пишете мобильное приложение?

Мобильное приложение сначала сделает идентификатор и пароль для аутентификации, передавая идентификатор и пароль для вашего имени пользователя api, по https, конечно. Часто URL будет что-то вроде

// yourwebsite/Account/Токен

Ваш апи бы проверить пользователя и если все в порядке, проблема является носителем маркера.

Мобильное приложение должно запомнить этот токен и последующие вызовы передать это в заголовке запроса. Именно так сервер будет знать, кто это. Вам больше не нужно отправлять идентификатор пользователя и пароль. И может быть сильный аргумент безопасности для того, чтобы не хранить идентификатор пользователя и пароль на мобильном устройстве вообще.

Теперь ваш код сервера проверяет токен, и вы узнаете, кто и что может сделать пользователь. Обычно токен истекает, поэтому любой мобильный клиент должен проверить это и повторно аутентифицировать, чтобы получить новый токен.

Но как сервер узнает этот токен, к кому он принадлежит?

В мире MVC, например, здесь есть код рамки. Существует много кода шаблона MVC. Если вы, оказывается, работаете .Net api services, см. Это http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api

Если вы не являетесь .Net на сервере, я уверен, что вам будет что-то еще, чтобы помочь вам по тем же принципам.

Что касается разработки API RESTful, то ServiceStack заслуживает рассмотрения. Если это слишком дорого, по крайней мере, рассмотрите их подход и бросьте свой собственный (особенно, когда речь заходит об версировании вашего api's).

+0

Я должен использовать PHP на стороне сервера, но на основное сомнение ответили объяснение токена. Спасибо. –

2

Вы неправильно понимаете дело с браузерами, поэтому ваш вывод ошибочен. Позвольте мне объяснить: когда вы входите на веб-сайт с помощью веб-браузера, сеанс действительно сохраняется, но не только на сервере. Он также сохраняется на стороне клиента. Всякий раз, когда вы отправляете запрос оттуда на сервер, вы также должны отправлять эту сохраненную информацию, называемую cookie, чтобы идентифицировать себя.

Давайте подумаем об этом более глубоко: как сервер идентифицирует вашу сессию как вашу сессию, не получая cookie? По IP-адресу? Нет, IP-адрес может использоваться многими, и он может измениться. Через сеанс браузера? Да, в сеансе браузера, который также содержит файл cookie.

Теперь, когда вы понимаете, что сеанс сохраняется как сервером, так и клиентом, вы наверняка уже знаете, что для мобильных приложений вам тоже нужно. Клиент входит в систему, поэтому для клиента создается cookie. Это трудно угадать. Оттуда клиент использует сервер, используя созданный для него файл cookie.

Если вы не верите мне, посетите веб-сайт, где вы не вошли в систему, а затем запустить console.log(document.cookie);, войдите в систему, а затем запустить console.log(document.cookie) снова, а затем выйти ANDD запустить console.log(document.cookie) снова.

+0

Да, я не знал о том, что происходит за кулисами в браузере, поэтому я понятия не имел, что это должно быть сделано _manually_ с приложением. –

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