Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Authentication in rails. Monolith vs SPA
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Dmitry Efimov
November 19, 2015
Programming
0
210
Authentication in rails. Monolith vs SPA
Dmitry Efimov
November 19, 2015
Tweet
Share
More Decks by Dmitry Efimov
See All by Dmitry Efimov
Автоматизируем синхронизацию HTTP API и документации
tuwilof
0
45
Автоматизация Document-Driven Development для проектов с большим API
tuwilof
0
47
Инструменты для обнаружения рассинхронизации реализации “REST” API от документации
tuwilof
0
51
Валидация “REST” API по документации APIB
tuwilof
0
44
Негативное тестирование “REST” API и защита от него
tuwilof
0
340
Ликбез по JSON
tuwilof
0
90
API Blueprint
tuwilof
0
83
Документирование API
tuwilof
0
200
Почему и как заменить все id на UUID
tuwilof
0
97
Other Decks in Programming
See All in Programming
Oxlintはいいぞ
yug1224
5
1.3k
izumin5210のプロポーザルのネタ探し #tskaigi_msup
izumin5210
1
130
Best-Practices-for-Cortex-Analyst-and-AI-Agent
ryotaroikeda
1
110
ノイジーネイバー問題を解決する 公平なキューイング
occhi
0
110
MUSUBIXとは
nahisaho
0
140
Oxlint JS plugins
kazupon
1
980
AIエージェントのキホンから学ぶ「エージェンティックコーディング」実践入門
masahiro_nishimi
5
480
AIと一緒にレガシーに向き合ってみた
nyafunta9858
0
250
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
200
なぜSQLはAIぽく見えるのか/why does SQL look AI like
florets1
0
470
CSC307 Lecture 04
javiergs
PRO
0
660
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
2
4.4k
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.6k
The Curious Case for Waylosing
cassininazir
0
240
New Earth Scene 8
popppiees
1
1.5k
The SEO Collaboration Effect
kristinabergwall1
0
350
Marketing to machines
jonoalderson
1
4.6k
Being A Developer After 40
akosma
91
590k
The World Runs on Bad Software
bkeepers
PRO
72
12k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Context Engineering - Making Every Token Count
addyosmani
9
660
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
190
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Transcript
Аутентификация в Rails монолит / SPA
Сравним два сферических проекта в вакууме
Browser Server POST /authenticate username=...&password=... HTTP 200 OK Set-Cookie: session=.......
GET /api/user Cookie: session=.... HTTP 200 OK { name: “foo” } find and deserialize session
Browser Server POST /authenticate username=...&password=... HTTP 200 OK { token:
‘...JWT…’ } GET /api/user Authorization: Bearer ...JWT... HTTP 200 OK { name: “foo”} validate token
На практике - требования к проекту меняются - нетривиальные задачи
- гемы могут работать некорректно - встречаются противоречия в документациях к гемам - нет универсального метода аутентификации
CookieStore + из коробки + удобно хранить значения в рамках
одной сессии
CacheStore + в браузере хранятся только маленькие ключики, а не
все данные
/config/initializers/session_store.rb -Rails.application.config.session_store : cookie_store, key: '_project_session' +Rails.application.config.session_store : cache_store, key:
'_project_session'
ActiveRecordStore MemCacheStore + корректная работа при наличии двух апп серверов
gem install activerecord-session_store rails generate active_record: session_migration Rails.application.config.session_store : active_record_store,
:key => '_my_app_session' ActiveRecordStore MemCacheStore install redis / rabbitmq Rails.application.config.session_store : mem_cache_store, key: '_project_session'
Cookies + можно установить срок жизни
cookies[:my_data] = { value: "Ruby on Rails", expires: 100.year.from_now, }
Devise + десяток модулей покрывающий тривиальные задачи + много мануала
Open ID + децентрализованная система
Provider gem install ruby-openid Consumer gem install ruby-openid gem install
omniauth-openid
OpenAuth / OAuth / OAuth2 аутентификация авторизация данные сессии хранятся
не в cookies получение доступа к данным пользователя токен определяет роль
Provider gem install oauth-plugin gem install oauth2 Consumer gem install
omniauth-oauth gem install omniauth-oauth2
Вопросы?