Авторизацию (регистрацию) и идентификацию пользователей на разрабатываемом портале я решил реализовать с помощью инструмента разработчика социальных сетей (Social Networks REST API) — тема далеко не инновационная, активно используется и очень проста в использовании.
Не буду перечислять все удобства и преимущества использования такого функционала на своих сайтах, но отмечу, что я очень доволен тем, что не запоминаю пароли к каждому сайту (даже если у меня есть парочка стандартных), и не участвую в утомительные регистрации с отправкой писем и подтверждений, а также избежать необходимости лишний раз сталкиваться с капчами.
Функционал этих API довольно примитивен, технология проста, а реализация достаточно унифицирована и проста.
Но при знакомстве с технологией документации и примеров API конкретной социальной сети недостаточно.
Кроме того, как написано в теме, используемый язык — Java, что автоматически уменьшает количество полезной информации.
Да и описаний в рунете не так много.
Можно пойти по пути наименьшего сопротивления и использовать сторонние RESTful продукты, но а) это не дает полного понимания процесса; б) снижает переключаемость требуемого процесса; в) зачастую исследование стороннего продукта может оказаться сложнее, чем разработка собственной реализации.
Хотя простота использования такого стороннего продукта может существенно облегчить разработку.
Однако лично я в этом обзоре сделал акцент на максимальном контроле над всеми процессами, даже в ущерб универсальности (мы «прикручиваем» конкретный функционал к конкретному сайту, и лишь немногие делают его универсальным продуктом «на все случаи жизни»).
»).
Кроме того, меня интересует не только реализация авторизации пользователей, но и реализация системы безопасности проекта, предоставляемой фреймворком Spring Security 3. Используемый набор платформ и инструментов: Пружинное ядро 3.1 , Весенний MVC 3.1 , Весенняя безопасность 3.1 , Спящий режим 4.1 .
Проект внедрения зарубежный, поэтому набор реализуемых соцсетей стандартный «для них» — Фейсбук , Твиттер , Гугл+ , LinkedIn .
Хочу отметить, что в пакете Spring есть готовый проект «из коробки» — Весенняя социальная программа (текущая версия 1.0.2), которая идеально инкапсулирована в среду продукта Spring и предназначена для использования с другими продуктами Spring. Наверняка это было бы профессиональным решением, но наша задача — все контролировать и сделать процесс максимально прозрачным для понимания.
Да и с самой Social не всё так гладко.
1. Модель.
Я пошел по несколько рискованному и противоречивому пути, объединив пользователя и ПОДЖО , И Детали пользователя , И Сущность .
С точки зрения подхода к программированию это неправильно, но а) это очень удобно; и б) сохраняет создание нескольких слоев, избавляя нас от необходимости создавать отдельные POJO+Entity, отдельные UserDetails и отдельный DTO, что фактически дублирует контент.
Предлагаемая схема построения модели следующая:
Я разделил два слоя (AuthUser и DataUser), чтобы не мешать логике авторизации и бизнес-логике проекта: посетитель, администратор и кто еще авторизуется точно так же, но у них есть свой набор свойств.
.
Например, в моем проекте есть Соискатели и Работодатели, они заходят на сайт одинаково, но имеют совершенно другую структуру модели.
Что касается разделения структуры внутри слоев, то это очевидно - набор полей, получаемый от Фейсбука, Твиттера и т.п.
, а особенно при стандартной авторизации, настолько разный, что создавать одну ужасно расширенную структуру для всего просто глупо и от с точки зрения построения базы данных - избыточно.
Что касается масштабируемости, то при добавлении нового поставщика услуг работать с такой структурой будет крайне неудобно.
Списки некоторых перечисленных объектов, а также используемых классов перечислений.
Авторизация.
java:
Теги: #Социальные сети #java #аутентификация #spring mvc #spring Security #Chulan@ Entity
-
Практикуйте Кайдзен
19 Oct, 24 -
Конструктор Мобильных Приложений My-Apps
19 Oct, 24 -
Emachines E732G: То Же Самое, Но Дешевле
19 Oct, 24 -
Астериск Для Корпоративных Клиентов
19 Oct, 24 -
Новая Озвучка В Google.translate
19 Oct, 24