Логика авторизации JohnCMS

4.76K
.
Delphinum
ramzes, возможно ты просто не до конца понимаешь архитектуру сессий. Дело в том, что сессия работает следующим образом:
1. Сервер открывает сессию
2. Сервер генерирует неповторимый идентификатор сессии (SSID)
3. Сервер передает заголовок Set-Cookie: PHPSSID=SSID
4. Сервер записывает в файл вида: SSID.data - данные сессии
5. При повторном заходе пользователя сервер получает от него куки с SSID
6. По SSID сервер находит файл SSID.data и читает из него данные сессии

Куки же работают практически так же:
1. Сервер передает заголовок Set-Cookie: данные
2. При повторном заходе пользователя сервер получает от него куки с данными

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

Конкретно в вашем случае я не вижу смысла пользоваться куками, когда есть сессии, да и хранить в куках (или в сессии) пароль.
.
Это все я знаю. Но общего не вижу. Заголовок с ид сессии это не связь. Это просто один из заголовков, механизм связи сессий. Он тоже отключаемый и включаемый
.
ramzes, ну так и я не вижу смысла использовать куки, когда есть сессии.
.
# Delphinum (24.12.2016 / 21:09)
ramzes, ну так и я не вижу смысла использовать куки, когда есть сессии.
Но ты же используешь куки. Ты сам сказал.
Какой то диссонанс, отсылать сеткуки и утверждать что рни не нужны, не находишь?
.
ramzes, нет, я не использую куки, я использую заголовок Set-Cookie, а это не одно и то же. Вообще изначально предполагалось, что у нас будет на одной платформе и мобилка и веб сайт, потому я решил использовать стандартный заголовок для установки сессии (сессия, кстати, тоже через заголовок Set-Cookie ставится), а после уже узнал, что мобильщики не хотят куки, ну так я и не стал их использовать, просто передал в Set-Cookie мой SSID и все.

Вообще это долгая и запутанная история и речь не о ней, а о том, зачем вы пользуете куки если есть сессии?
.
Delphinum,
я использую заголовок Set-Cookie
Покажи на примере, пожалуйста, как ты используешь этот заголовок?
.
ДоХтор, из куска кода вы ничего не поймете, ибо там инфаструктура на зенде:
// Кусок контроллера
  private function call(array $params, $value){                                    
    $headers = $this->getRequest()->getHeaders();                                  
    if($headers->has('X-Auth-Token')){                                             
      $sid = $headers->get('X-Auth-Token')->getFieldValue();                       
      $this->sessionManager->setId($sid);                                          
    }                                                                              
    else{                                                                          
      $sid = '';                                                                   
    }                                                                              
                                                                                   
    $this->sessionManager->start();
    ... // и т.д.

На деле я просто стартую самую обычную сессию и та, как и должна делать самая обычная сессия, шлет на телефон заголовок Set-Cookie, а телефон, в свою очередь, должен мне возвращать всегда заголовок X-Auth-Token.

Все это велосипед и быть так не должно, но задачи резко поменялись в последний момент, потому получилось то что получилось.
.
Польза сессий в том, что:
1. Они универсальны, ибо можно применить их на любом устройстве и любом протоколе
2. Они безопасны, ибо сессия зависит от сложности генерируемого SID и времени его жизни, а это может быть сколько угодно сложно
3. Она не велосипед, ибо уже реализована в PHP
.
Delphinum, а разве заголовок Set-Cookie не устанавливает куку в браузере? Чё-то я начинаю не понимать...
.
ДоХтор, да, для этого и нужен этот заголовок. Только вот сессия тоже работает через установку куки в браузере )
Всего: 185