Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (17)

Наибольший вклад в теги

Все теги (52)

Лучшие ответы пользователя

Все ответы (21)
  • Каковы основные принципы регистрации и авторизации через социальные сети OAuth2?

    hbuser
    @hbuser Автор вопроса
    Отвечу сам себе.
    Здесь есть полезная конкретная информация о технической реализации.

    А если вкратце, то...

    Для авторизации, регистрации используется все та же таблица 'users'. Вместе с обычной регистрацией и авторизацией, когда при регистрации (в самом простом виде) в таблицу 'users' добавляются email, password и login пользователя, а при авторизации проверяется соответствие введенных login'а и password'а существующим в базе данных, аналогичным образом используется и регистрация/авторизация через социальные сети. Только в данном случае источником данных о пользователе для его регистрации является не непосредственный пользователь, который вводит данные в форму, а соц. сеть. Регистрация в данном случае достаточно прозрачная, т.е. не видна пользователю. Схема примерно следующая (без особенностей работы Oauth-протокола):


    1) Пользователь выбирает вход через соц. сеть.
    2) Происходит обращение к странице авторизации в этой соц. сети, если человек еще не авторизовывался там. После ввода данных, а если он ранее авторизовывался, происходит запрос на разрешение использования его данных.
    3) Если человек отказывается, то на этом конец. Если дает согласие, то выполняется перенаправление на указанную в настройках Oauth страницу сайта.
    4) У каждого пользователя в соц. сетях есть свой уникальный идентификатор, который можно запрашивать. Для своей таблицы 'users' нужно добавить пару дополнительных полей (например, вот такие): auth_via (enum('native, 'vk', 'mailru', '...')) - для обозначения типа регистрации пользователя, и social_id - здесь будет храниться уникальный идентификатор в соц. сети. Если нужно хранить какие-то специфические данные этого пользователя из соц. сетей, то можно создать доп. поля для этих данных.
    5) После того, как пользователь дал разрешение на использование его данных, необходимо запросить нужные данные от соц. сети, в т.ч. и идентификатор пользователя в соц. сети. Вот здесь и начинается невидимый процесс регистрации. Нужно проверить есть ли в БД пользователь с таким social_id, если нет, то вставляем social_id, данные пользователя из соц. сети, по необходимости, в БД. Все, пользователь зарегистрирован.
    Если же данные о пользователе есть, то необходимо запросить актуальные данные из соц. сети, сравнить их с теми, что в базе и если они изменились, то обновить их и в своей базе данных, если нет, то просто переходим к следующему шагу.
    6) Создается сессия с данными пользователя.

    Таким образом, к существующей таблице "родной" регистрации пользователей сайта присоединяется, условно говоря, таблица, поля, необходимые для регистрации/авторизации через соц. сети., и друг-другу они не мешают.

    ca4a4b263fd1424085988c9deaeb6d5b.png

    Для пользователя, зарегистрированного из соц. сети пароля и логина, естественно, нет. Они нужны для авторизации. А т.к. пользователь авторизуется с помощью своих логина и пароля в соц. сети, то и указывать здесь нечего. И еще, можно при авторизации, к запросу проверки логина и пароля, добавить условие

    'AND WHERE `auth_via`="native"'

    , чтобы исключить пользователей, зарегистрированных из соц. сетей.

    Как видно, для каждого пользователя в таблице создается внутренний (внутрисайтовый, если так можно выразиться) первичный, автоинкрементный ключ. Соответственно, нет разницы для логики сайта между пользователем, зарегистрированным через соц. сеть и через сайт. Если говорить об интернет-магазине, то, для привязки заказов к пользователю, можно использовать единый, внутренний идентификатор ID.
    Ответ написан
  • Какой php фреймворк наиболее прост в освоении?

    hbuser
    @hbuser
    Мои пять копеек. Laravel - молодой фреймворк, но современный и очень хорошо проработан. Поддерживает много разных современных плюшек изначально, из коробки (например, PSR-4, composer, как основное средство установки расширений и пр.), на которые некоторые фреймворки, которые существуют больше, чем Laravel только перебрались. Отличается тем, что в нем очень многое достаточно человекопонятно и логично. Создан быть простым. Многое может. Создано много расширений для него (по сути, это любое расширение, которое можно установить с помощью composer, а это 77 тыс. штук расширений, адаптированное для Laravel, что тоже не сложно, но можно и без этого. Не будет сильно удобно, но жить можно.), а если чего-то нет, то packagist предложит все, что душе угодно и установить это дело 2-х минут. Около него очень быстро продолжает расти сообщество единомышленников. Очень много информации по нему на stackoverflow и вообще в интернете. Есть IRC-чаты, в которых много понимающих людей и можно получить помощь в любое время дня и ночи. Есть ребята, которые посвящают себя урокам по нему и делают это очень качественно. Возьмем того же Jeffrey Way. Красавец в плане подачи информации и произношение отличное, американское, не британское. Слушать одно удовольствие. На западе про него знают и разработчики востребованы, у нас его знают плохо. Только относительно продвинутые и открытые новому разработчики. Я настоятельно рекомендую этот фреймворк. Он прост - раз. Он научит работе с различными современными сопутствующими технологиями. Например, из коробки доступен box для vagrant. А это уже немного другой уровень в сравнении с WAMP на Windows.
    Сейчас на базе Laravel уже и микрофреймворк доступен.
    Кстати, в IRC можно задать вопрос и самому автору.
    Еще момент. Автор не городил своих велосипедов. Это качественный продукт. Многое хорошо работающее и хорошо себя зарекомендовавшее там из Symphony, очень многое. Своеобразная квинтэссенция существующих наработок, технологий + свои наработки и своя логичная интерпретация работы с фреймворком.
    Ответ написан
  • О скорости SATA3 SSD на SATA2 контроллере. Есть ли резон?

    hbuser
    @hbuser
    Озадачился этим же вопросом.
    Могу только процитировать абзац из хорошей статьи.

    Очевидно, что вы получите заметный прирост к отзывчивости системы, даже используя разъём SATA 3 Гбит/с. На практике интерфейс 3 Гбит/с не сдерживает производительность основных приложений. Интерфейс SATA III вступает в игру в синтетических тестах, достигающих технологических пределов, в задачах рабочих станций/серверов или в во время передачи больших объёмов данных с SSD на SSD.

    Источник: www.thg.ru/storage/ustanovka_ssd_v_sistemu_s_sata_...
    Статья - более чем исчерпывающая. В отличие от ответа, который помечен решением, там имеются доказательства.
    Ответ написан
  • Что выбрать для написания web-страницы с авторизацией и работой с базой данных?

    hbuser
    @hbuser
    Я свои пару слов тоже внесу. Ответчики какие-то оторванные от мира. Какой С#.NET, какой Java? С дуба рухнули? Я понимаю, что каждый одеяло в свою сторону тянет, но человек с этим никогда не сталкивался. Вы что ему советуете? Чего-то стоящего с чего можно было бы начать изучение я здесь не увидел.

    Стандартных для веб-разработки является стек программ xAMP (где x - название операционной системы). Apache, Mysql, PHP. Львиная доля веб-проектов разрабатывается с их помощью. Поэтому начинайте изучать именно их. И оставьте в покое Java. :) Не нужен он вам. Использовать какие-то CMS не советую совсем. Лучше начать с "кирпичиков".

    Для начала сделайте (если нет желания что-то создавать на каждом этапе изучения, то просто изучите это) статический сайт на HTML и CSS. Это первое с чего надо начать. Потом добавляете PHP сюда. Потом JS. Не используйте чистый JS. Используйте Jquery - самая популярная в мире библиотека для разработки разных "динамичностей" на сайте (AJAX, разные события, слайдеры, движульки). Для jQuery существует очень много разных плагинов. Обратите внимание на безопасность сайтостроения. После того как поймете эти штуки можно начинать пользоваться фреймворком. Из фреймворков советую Laravel (объективно хорош, вокруг него собралось большое сообщество, вдохновлен Ruby, а Ruby считается чуть ли не эталоном по "хорошести", логичен, мощен и прост в использовании). Для разработки советую использовать Sublime text.

    С чего начать изучение. Есть курсы Евгения Попова, которые очень сильно ругают и не зря. Но нужно отделять зерна от плевел. Со своей задачей он справляется хорошо - дать быстрый старт в разработке. А ошибки и пр. несовершенство его кода будете исправлять потом. Благодаря этим курсам можете обрести начальное понимание. Далее, советую курсы от центра Специалист по веб-разработке (у них и про безопасность сайтостроения и про настройки сервера и про jquery и про php есть, полноценные, очень качественные курсы). А, вообще, знаете что?.. Начните с них и если только что-то вам не будет понятно, ну совсем, то только в этом случае вернитесь к Попову... в крайнем случае. Специалист дает отличную базу. Это полноценные курсы с методичками и заданиями.

    Порядок изучения:
    HTML и CSS уровень 1
    HTML и CSS уровень 2
    PHP уровень 1-4 (Борисова Игоря Олеговича, у него интересный говор, но все очень хвалят за прекрасное преподнесение информации)
    Проектирование безопасности веб - сайтов и эффективная защита от атак

    JavaScript. Уровень 1. Основы веб-программирования -
    JavaScript. Уровень 2. Расширенные возможности -
    JavaScript. Уровень 3б. AJAX. Разработка веб - приложений для Web 2.0 -
    Специалист. Использование jQuery. Уровень 1. 2013 год
    30-days-to-learn-jquery от Nettuts.

    То, что помечено минусом, можно пропустить, если покажется, что много всего. Но это полный курс. Курса по Jquery - должно хватить. И то, я бы его заменил на это - https://courses.tutsplus.com/courses/30-days-to-le... Отличнейший ресурс tutsplus, но это в том случае, если нет проблем с языком. У Джефри есть очень много всего, очень качественный материал.

    Все то, что описал - платное. Но тут я закончу говорить об этом и вы меня поймете, потому, что , я надеюсь, не сочтете это проблемой.

    Для разработки под Windows исполользуйте OpenServer.

    Есть еще следующий этап изучения и организации всей этой котовасии, но вам этого хватит, чтобы полно изучить тему, а после можно будет вернуться к следующему этапу. :)
    Ответ написан
  • Как реализовать авторизацию в Laravel?

    hbuser
    @hbuser
    Попробуйте так:

    Auth::loginUsingId($user->id, true);

    laravel.com/api/source-class-Illuminate.Auth.Guard...

    А вообще, на будущее, у Laravel есть irc-комната. Будьте уверены - там вы получите ответы на любые вопросы. Данный сайт - не лучшее место для вопросов по Laravel.
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (40)