• Как правильно реализовать API?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Шаг 1, изучаем https://jwt.io/ - на настоящий момент стандарт для аутентификации.
    Шаг 2. Каждое устройство должно иметь уникальный токен. Пользователь должен иметь возможность деавторизовать любое устройство. При смене пароля все токены автоматически стираются.

    Организация хранения токена должна выглядеть примерно так:
    tokens
    - user_id
    - device_id  - при авторизации через браузер можно подставить md5(User-Agent)
    - device_name  - человеко-понятное имя девайса или название браузера
    - token
    - last_used
    - expires_at

    Про API, вместо передачи дополнительного параметра в запросе очень часто используют HTTP-заголовки.
    Наличие множества токенов практически ничем не грозит, разве что небольшим увеличением размера данных.
    Сброс токенов нужен по времени, по смене пароля, значительной смене географии (другая страна и т.п.), при нажатии кнопки Выход и по желанию пользователя (опции Выйти со всех устройств).
    Ответ написан
    12 комментариев
  • Как заставить socket.io работать по https?

    nazarpc
    @nazarpc
    Open Source enthusiast
    Если у вас WebSockets, то почему вы пишите http?
    Для 80 порта пишите ws://... для 443 с шифрованием wss://, для другого указываете явно.
    Что-то вроде wss://24.190.11.201:8047
    В доке написано почему-то http, так попробуйте https раз у вас сертификат.

    Только вопрос как у вас сервер настроен, и вообще правильно ли.
    Если вам нужно шифрование - я бы посоветовал поставить Nginx, он будет работать с сертификатами и прочими вещами со своей области ответственности, а ваше приложение будет работать со своею частью.
    В конфиг Nginx прописать подобное:
    location ~ ^/WebSockets$ {
    		proxy_pass			http://127.0.0.1:8080;
    		proxy_http_version	1.1;
    		proxy_set_header	Upgrade $http_upgrade;
    		proxy_set_header	Connection	"upgrade";
    	}
    Ответ написан
    Комментировать
  • Как сделать плавный скролл (смягчение скролла) на сайте?

    jQuery
    $(document).bind( 'mousewheel', function (e) { 
        var nt = $(document.body).scrollTop()-(e.deltaY*e.deltaFactor*100); 
        e.preventDefault(); 
        e.stopPropagation(); 
        $(document.body).stop().animate( { 
             scrollTop : nt 
         } , 500 , 'easeInOutCubic' );  
    } )

    C длиной скрола (100), скоростью (500) и эфектом (easeInOutCubic) нужно поиграться
    Ответ написан
    25 комментариев