2016-08-31 3 views
2

У меня есть приложение для Android, которое взаимодействует с моим сервером, написанным на PHP. Я сделал несколько запросов, которые будут вызваны через POST из приложения Android и будет отвечать в формате JSON.Android -> Управление сеансом PHP

У меня есть запрос на вход, приложение для Android будет отправлять учетные данные (пароль и имя пользователя) на сервер. Если вход в систему успешно завершен, session_ID будет отправлен в качестве ответа. Для каждого другого запроса, который требует аутентификации пользователя, потребуется session_ID. Если этот session_ID не установлен, я буду считать, что пользователь не зарегистрирован. В противном случае, если session_ID существует, я отвечу на запрос с запрошенными данными.

Я собираюсь проверить аутентификацию с помощью следующего кода.

if(!isset($_POST['session_ID'])) 
{ 

    $json[] = array(
     'return' => $errors_authentification, 
     'error_msg' => "User not authenticated" 
    ); 

    echo json_encode($json); 
    return; 
} 

session_id($_POST['session_ID']); 
session_start(); 

Считаете ли вы, что это хороший подход? Я видел сообщение о токенах вместо session_ID, чтобы иметь дело с андроид-php-взаимодействиями, которым нужна аутентификация, в чем разница?

+0

Возможный дубликат [Android и PHP - Нужно ли использовать сеансы?] (Http://stackoverflow.com/questions/9814254/android-and-php-do-i-need-to-use-sessions) – halfer

ответ

0

Существует множество подходов к решению аутентификации пользователя после входа в систему, который из новейших и самых горячих - JWT, JSON Web Tokens, который представляет собой простой способ хранения сеанса на стороне клиента таким образом, чтобы его можно было безопасно использовать с конца сервера ,

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

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

Я хотел бы «кэшировать» некоторые данные на стороне клиента, так как токен также может использоваться в клиенте для использования этих идентификаторов.

Чтобы ответить на ваш вопрос, ваш подход прост и требует почти никаких усилий, а также его безопасности как файлов cookie, если вы не можете захватить идентификатор в сценарии MITM, вы в порядке.

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