За последние 24 часа нас посетили 17592 программиста и 1589 роботов. Сейчас ищут 1419 программистов ...

Авторизация, просто логика :)

Тема в разделе "Решения, алгоритмы", создана пользователем antonn, 31 мар 2009.

  1. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    Не собираюсь делать конкретных классов и примеров, речь о другом.
    Т.к. http нас обламывает с однозначной идентификацией клиента, приходится делать костыли, на данный момент думаю такой костыль, хочу сделать как правильнее и, главное, надежнее.
    Пока для хранения идентификатора на клиенте использую куки (дальше без особых проблем можно привинтить и GET/POST), это несколько обламывает тех, у кого куки отключены, но придется. При отправке формы авторизации генерирую хеш_1, кладу его в базу (куда именно ниже), на основании хеш_1 генерю хеш_2 и вместе с user_id кладу в куку. При обновлении страницы, беру хеш_2 и user_id из куков, по базе смотрю какой хеш_1 у user_id, генерю из него "хеш_2" и сравниваю с куковским. Вроде бы все, как по шкале нормальности такой подход, есть ли другие?
    Так же возникает вопрос, где хранить хеш_1 - в поле таблицы юзеров или в сессии? Лично мне сессия не нужна как таковая, мне нужно отделять лишь зарегеных юзеров, а гости сами по себе. И на основании чего генерить хеш_1? Юзерагент наверное, ну может IP, и то и другое не очень защищено (даже с солью user_id). Какие есть мысли по этому поводу? Хранение хешь в сессии не нравится по причине пересозданий этих сессий (особенно поисковиками), а это лишние запросы и вообще как то ненадежно (юзаю свои на базе).
     
  2. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    PHP:
    1.  
    2. <?php
    3. $_COOKIE['login'] = uniqid();
    4. $_COOKIE['pwd']  = md5( uniqid() + SALT );
    5.  
    cookie_login и cookie_pwd храню в бд, отдельно от login и pwd
    Если у пользователя нет сессии, поднимаю его из БД по кукам.