SlideShare a Scribd company logo
1 of 9
Download to read offline
#8 Ограничение доступа в Ruby on Rails
Аутентификация, авторизация на сайтах, с
использованием devise+pundit
Денис Калесников, главный программист Мэйк
make.st
На этом занятии
1. Настройка аутентификации на devise
2. Роли пользователей
3. Форма входа и ссылка выхода
4. Авторизация доступа к контенту на pundit
Аутентификация
Проверка подлинности предъявленного пользователем идентификатора.
В Rails используется библиотека devise
Из коробки включает в себя аутентификацию, регистрацию, подтверждение
аккаунта через email, сброс пароля через email.
Особенность devise
Будьте осторожны - отключайте возможность регистрации, которая включена
по-умолчанию.
Если этого не сделать, любой сможет зарегаться на сайте и получить доступ к
админке.
Авторизация
Проверка, может ли аутентифицированный пользователь выполнять
определённые действия в системе.
В экосистеме Rails есть несколько библиотек, мы будем использовать pundit
Хранение ролей пользователя
Простой способ - хранить роли в поле класса User. Для этого можно
использовать библиотеку role_model.
Более сложный способ - вынести роль в отдельную модель Role. Также
потребуется создать соединительную таблицу UserToRole. Данный способ
подходит в ситуациях, например, когда ролями можно управлять из админки,
а не через изменение исходного кода системы и выпуска нового релиза.
Практическое задание
1. Доступ к реестру сотрудников должен быть ограничен для конкретного
круга пользователей
2. В случае неавторизованного запроса должен быть редирект
пользователя.
3. В системе должны быть 2 роли
a. Админ - полный доступ
b. Менеджер - просмотр списка и карточек сотрудника.
4. Форма входа на сайт
5. Ссылка “Выйти из системы”
Ответ на задание
Изменения в коде, которые у вас должны получиться - в этом коммите
Спасибо за внимание!
Денис Калесников, главный программист Мэйк
make.st

More Related Content

What's hot

WordPress REST API
WordPress REST APIWordPress REST API
WordPress REST APIIgor Sazonov
 
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-выводКурс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-вывод7bits
 
Drupal организация разработки
Drupal   организация разработкиDrupal   организация разработки
Drupal организация разработкиAnna Fedoruk
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальBadoo Development
 
Drupal -organizaciya_razrabotki
Drupal  -organizaciya_razrabotkiDrupal  -organizaciya_razrabotki
Drupal -organizaciya_razrabotkidrupalconf
 
Лекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-frameworkЛекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-frameworkЯковенко Кирилл
 
Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Constantin Kichinsky
 
C# Web. Занятие 04.
C# Web. Занятие 04.C# Web. Занятие 04.
C# Web. Занятие 04.Igor Shkulipa
 
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИСTARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС2ГИС Технологии
 
Изоморфный JavaScript — будущее уже здесь
Изоморфный JavaScript — будущее уже здесьИзоморфный JavaScript — будущее уже здесь
Изоморфный JavaScript — будущее уже здесьCodeFest
 
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...tfmailru
 
Как не утонуть в мегабайтах JS-кода
Как не утонуть в мегабайтах JS-кодаКак не утонуть в мегабайтах JS-кода
Как не утонуть в мегабайтах JS-кодаtfmailru
 

What's hot (14)

WordPress REST API
WordPress REST APIWordPress REST API
WordPress REST API
 
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-выводКурс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
 
Backbone lesson 1
Backbone lesson 1Backbone lesson 1
Backbone lesson 1
 
Drupal организация разработки
Drupal   организация разработкиDrupal   организация разработки
Drupal организация разработки
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон Довгаль
 
Drupal -organizaciya_razrabotki
Drupal  -organizaciya_razrabotkiDrupal  -organizaciya_razrabotki
Drupal -organizaciya_razrabotki
 
Лекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-frameworkЛекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-framework
 
Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!
 
Backbone js
Backbone jsBackbone js
Backbone js
 
C# Web. Занятие 04.
C# Web. Занятие 04.C# Web. Занятие 04.
C# Web. Занятие 04.
 
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИСTARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
 
Изоморфный JavaScript — будущее уже здесь
Изоморфный JavaScript — будущее уже здесьИзоморфный JavaScript — будущее уже здесь
Изоморфный JavaScript — будущее уже здесь
 
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
 
Как не утонуть в мегабайтах JS-кода
Как не утонуть в мегабайтах JS-кодаКак не утонуть в мегабайтах JS-кода
Как не утонуть в мегабайтах JS-кода
 

Similar to Ограничение доступа в ruby on rails

Тестирование на проникновение в сетях Microsoft (v.2)
Тестирование на проникновение в сетях Microsoft (v.2)Тестирование на проникновение в сетях Microsoft (v.2)
Тестирование на проникновение в сетях Microsoft (v.2)Dmitry Evteev
 
Тестирование на проникновение в сетях Microsoft
Тестирование на проникновение в сетях MicrosoftТестирование на проникновение в сетях Microsoft
Тестирование на проникновение в сетях MicrosoftDmitry Evteev
 
Корпоративное приложение на Rails
Корпоративное приложение на RailsКорпоративное приложение на Rails
Корпоративное приложение на RailsAndrei Kaleshka
 
WebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий ОстапенкоWebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий ОстапенкоMail.ru Group
 
COMAQA.BY Conf #2: "Codeception + PHP for QA Automation", Евгений Борисик, CO...
COMAQA.BY Conf #2: "Codeception + PHP for QA Automation", Евгений Борисик, CO...COMAQA.BY Conf #2: "Codeception + PHP for QA Automation", Евгений Борисик, CO...
COMAQA.BY Conf #2: "Codeception + PHP for QA Automation", Евгений Борисик, CO...COMAQA.BY
 
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Ontico
 
OAuthоризация и API социальных сетей
OAuthоризация и API социальных сетейOAuthоризация и API социальных сетей
OAuthоризация и API социальных сетейАртём Курапов
 
Современные платформы (фреймворки) разработки веб- приложений на PHP
Современные платформы (фреймворки) разработки веб- приложений на PHP Современные платформы (фреймворки) разработки веб- приложений на PHP
Современные платформы (фреймворки) разработки веб- приложений на PHP Magecom Ukraine
 
Эволюция BackDoor.Flashback
Эволюция BackDoor.FlashbackЭволюция BackDoor.Flashback
Эволюция BackDoor.Flashbackhexminer
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word pressvovasik
 
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)Dmitry Evteev
 
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...Mail.ru Group
 
Windows azure общий обзор
Windows azure общий обзорWindows azure общий обзор
Windows azure общий обзорMicrosoft
 
Java осень 2014 занятие 1
Java осень 2014 занятие 1Java осень 2014 занятие 1
Java осень 2014 занятие 1Technopark
 
сравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикссравнение Drupal и 1с битрикс
сравнение Drupal и 1с битриксAndrii Podanenko
 
Информационная безопасность и web-приложения
Информационная безопасность и web-приложенияИнформационная безопасность и web-приложения
Информационная безопасность и web-приложенияMaxim Krentovskiy
 
Как обезопасить PBN от взлома? Практические рекомендации
Как обезопасить PBN от взлома? Практические рекомендацииКак обезопасить PBN от взлома? Практические рекомендации
Как обезопасить PBN от взлома? Практические рекомендацииNaZapad
 

Similar to Ограничение доступа в ruby on rails (20)

Тестирование на проникновение в сетях Microsoft (v.2)
Тестирование на проникновение в сетях Microsoft (v.2)Тестирование на проникновение в сетях Microsoft (v.2)
Тестирование на проникновение в сетях Microsoft (v.2)
 
Тестирование на проникновение в сетях Microsoft
Тестирование на проникновение в сетях MicrosoftТестирование на проникновение в сетях Microsoft
Тестирование на проникновение в сетях Microsoft
 
Корпоративное приложение на Rails
Корпоративное приложение на RailsКорпоративное приложение на Rails
Корпоративное приложение на Rails
 
WebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий ОстапенкоWebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий Остапенко
 
COMAQA.BY Conf #2: "Codeception + PHP for QA Automation", Евгений Борисик, CO...
COMAQA.BY Conf #2: "Codeception + PHP for QA Automation", Евгений Борисик, CO...COMAQA.BY Conf #2: "Codeception + PHP for QA Automation", Евгений Борисик, CO...
COMAQA.BY Conf #2: "Codeception + PHP for QA Automation", Евгений Борисик, CO...
 
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
 
OAuthоризация и API социальных сетей
OAuthоризация и API социальных сетейOAuthоризация и API социальных сетей
OAuthоризация и API социальных сетей
 
Современные платформы (фреймворки) разработки веб- приложений на PHP
Современные платформы (фреймворки) разработки веб- приложений на PHP Современные платформы (фреймворки) разработки веб- приложений на PHP
Современные платформы (фреймворки) разработки веб- приложений на PHP
 
Эволюция BackDoor.Flashback
Эволюция BackDoor.FlashbackЭволюция BackDoor.Flashback
Эволюция BackDoor.Flashback
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word press
 
Этичный хакинг
Этичный хакингЭтичный хакинг
Этичный хакинг
 
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
Chaos Constructions HackQuest 2010 Full Disclosure (мастер-класс)
 
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
 
Windows azure общий обзор
Windows azure общий обзорWindows azure общий обзор
Windows azure общий обзор
 
Java осень 2014 занятие 1
Java осень 2014 занятие 1Java осень 2014 занятие 1
Java осень 2014 занятие 1
 
Oasisfun
OasisfunOasisfun
Oasisfun
 
сравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикссравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикс
 
9-vignetts.pdf
9-vignetts.pdf9-vignetts.pdf
9-vignetts.pdf
 
Информационная безопасность и web-приложения
Информационная безопасность и web-приложенияИнформационная безопасность и web-приложения
Информационная безопасность и web-приложения
 
Как обезопасить PBN от взлома? Практические рекомендации
Как обезопасить PBN от взлома? Практические рекомендацииКак обезопасить PBN от взлома? Практические рекомендации
Как обезопасить PBN от взлома? Практические рекомендации
 

More from Digital-агентство Мэйк

Системные коммуникации с пациентом
Системные коммуникации с пациентомСистемные коммуникации с пациентом
Системные коммуникации с пациентомDigital-агентство Мэйк
 
Как эффективно развивать и удерживать нужных сотрудников
Как эффективно развивать и удерживать нужных сотрудниковКак эффективно развивать и удерживать нужных сотрудников
Как эффективно развивать и удерживать нужных сотрудниковDigital-агентство Мэйк
 
Индивидуальный тюнинг и кастомизации своего продукта как новая стратегия раб...
Индивидуальный тюнинг и кастомизации своего продукта как новая стратегия раб...Индивидуальный тюнинг и кастомизации своего продукта как новая стратегия раб...
Индивидуальный тюнинг и кастомизации своего продукта как новая стратегия раб...Digital-агентство Мэйк
 
12 эффективных инструментов для отрыва от конкурентов
12 эффективных инструментов для отрыва от конкурентов 12 эффективных инструментов для отрыва от конкурентов
12 эффективных инструментов для отрыва от конкурентов Digital-агентство Мэйк
 
Современные тенденции против устаревших стереотипов
Современные тенденции против устаревших стереотиповСовременные тенденции против устаревших стереотипов
Современные тенденции против устаревших стереотиповDigital-агентство Мэйк
 
Продвижение в соцсетях: 13 эффективных способов
Продвижение в соцсетях: 13 эффективных способовПродвижение в соцсетях: 13 эффективных способов
Продвижение в соцсетях: 13 эффективных способовDigital-агентство Мэйк
 
Crm системы: клиент в центре внимания
Crm системы: клиент в центре вниманияCrm системы: клиент в центре внимания
Crm системы: клиент в центре вниманияDigital-агентство Мэйк
 
Системный подход к привлечению клиентов
Системный подход к привлечению клиентовСистемный подход к привлечению клиентов
Системный подход к привлечению клиентовDigital-агентство Мэйк
 
Cоциальные сети для молодёжных объединений
Cоциальные сети для молодёжных объединенийCоциальные сети для молодёжных объединений
Cоциальные сети для молодёжных объединенийDigital-агентство Мэйк
 
Эффективный сайт медицинского учреждения
Эффективный сайт медицинского учрежденияЭффективный сайт медицинского учреждения
Эффективный сайт медицинского учрежденияDigital-агентство Мэйк
 
Контекстная реклама: от теории к практике
Контекстная реклама: от теории к практикеКонтекстная реклама: от теории к практике
Контекстная реклама: от теории к практикеDigital-агентство Мэйк
 

More from Digital-агентство Мэйк (17)

Системные коммуникации с пациентом
Системные коммуникации с пациентомСистемные коммуникации с пациентом
Системные коммуникации с пациентом
 
Как эффективно развивать и удерживать нужных сотрудников
Как эффективно развивать и удерживать нужных сотрудниковКак эффективно развивать и удерживать нужных сотрудников
Как эффективно развивать и удерживать нужных сотрудников
 
Индивидуальный тюнинг и кастомизации своего продукта как новая стратегия раб...
Индивидуальный тюнинг и кастомизации своего продукта как новая стратегия раб...Индивидуальный тюнинг и кастомизации своего продукта как новая стратегия раб...
Индивидуальный тюнинг и кастомизации своего продукта как новая стратегия раб...
 
12 эффективных инструментов для отрыва от конкурентов
12 эффективных инструментов для отрыва от конкурентов 12 эффективных инструментов для отрыва от конкурентов
12 эффективных инструментов для отрыва от конкурентов
 
4 шага к счастью клиента
4 шага к счастью клиента4 шага к счастью клиента
4 шага к счастью клиента
 
Современные тенденции против устаревших стереотипов
Современные тенденции против устаревших стереотиповСовременные тенденции против устаревших стереотипов
Современные тенденции против устаревших стереотипов
 
Продвижение в соцсетях: 13 эффективных способов
Продвижение в соцсетях: 13 эффективных способовПродвижение в соцсетях: 13 эффективных способов
Продвижение в соцсетях: 13 эффективных способов
 
Угрозы безопасности в интернете
Угрозы безопасности в интернетеУгрозы безопасности в интернете
Угрозы безопасности в интернете
 
Crm системы: клиент в центре внимания
Crm системы: клиент в центре вниманияCrm системы: клиент в центре внимания
Crm системы: клиент в центре внимания
 
Ruby on Rails. Ajax-обработка html-форм
Ruby on Rails. Ajax-обработка html-формRuby on Rails. Ajax-обработка html-форм
Ruby on Rails. Ajax-обработка html-форм
 
Ruby on Rails. Работа с моделями
Ruby on Rails. Работа  с моделямиRuby on Rails. Работа  с моделями
Ruby on Rails. Работа с моделями
 
Обзор Ruby
Обзор RubyОбзор Ruby
Обзор Ruby
 
Первые страницы на Ruby on Rails
Первые страницы на Ruby on Rails Первые страницы на Ruby on Rails
Первые страницы на Ruby on Rails
 
Системный подход к привлечению клиентов
Системный подход к привлечению клиентовСистемный подход к привлечению клиентов
Системный подход к привлечению клиентов
 
Cоциальные сети для молодёжных объединений
Cоциальные сети для молодёжных объединенийCоциальные сети для молодёжных объединений
Cоциальные сети для молодёжных объединений
 
Эффективный сайт медицинского учреждения
Эффективный сайт медицинского учрежденияЭффективный сайт медицинского учреждения
Эффективный сайт медицинского учреждения
 
Контекстная реклама: от теории к практике
Контекстная реклама: от теории к практикеКонтекстная реклама: от теории к практике
Контекстная реклама: от теории к практике
 

Ограничение доступа в ruby on rails

  • 1. #8 Ограничение доступа в Ruby on Rails Аутентификация, авторизация на сайтах, с использованием devise+pundit Денис Калесников, главный программист Мэйк make.st
  • 2. На этом занятии 1. Настройка аутентификации на devise 2. Роли пользователей 3. Форма входа и ссылка выхода 4. Авторизация доступа к контенту на pundit
  • 3. Аутентификация Проверка подлинности предъявленного пользователем идентификатора. В Rails используется библиотека devise Из коробки включает в себя аутентификацию, регистрацию, подтверждение аккаунта через email, сброс пароля через email.
  • 4. Особенность devise Будьте осторожны - отключайте возможность регистрации, которая включена по-умолчанию. Если этого не сделать, любой сможет зарегаться на сайте и получить доступ к админке.
  • 5. Авторизация Проверка, может ли аутентифицированный пользователь выполнять определённые действия в системе. В экосистеме Rails есть несколько библиотек, мы будем использовать pundit
  • 6. Хранение ролей пользователя Простой способ - хранить роли в поле класса User. Для этого можно использовать библиотеку role_model. Более сложный способ - вынести роль в отдельную модель Role. Также потребуется создать соединительную таблицу UserToRole. Данный способ подходит в ситуациях, например, когда ролями можно управлять из админки, а не через изменение исходного кода системы и выпуска нового релиза.
  • 7. Практическое задание 1. Доступ к реестру сотрудников должен быть ограничен для конкретного круга пользователей 2. В случае неавторизованного запроса должен быть редирект пользователя. 3. В системе должны быть 2 роли a. Админ - полный доступ b. Менеджер - просмотр списка и карточек сотрудника. 4. Форма входа на сайт 5. Ссылка “Выйти из системы”
  • 8. Ответ на задание Изменения в коде, которые у вас должны получиться - в этом коммите
  • 9. Спасибо за внимание! Денис Калесников, главный программист Мэйк make.st