Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Authentication in rails. Monolith vs SPA
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Dmitry Efimov
November 19, 2015
Programming
220
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Authentication in rails. Monolith vs SPA
Dmitry Efimov
November 19, 2015
More Decks by Dmitry Efimov
See All by Dmitry Efimov
Автоматизируем синхронизацию HTTP API и документации
tuwilof
0
51
Автоматизация Document-Driven Development для проектов с большим API
tuwilof
0
52
Инструменты для обнаружения рассинхронизации реализации “REST” API от документации
tuwilof
0
58
Валидация “REST” API по документации APIB
tuwilof
0
50
Негативное тестирование “REST” API и защита от него
tuwilof
0
350
Ликбез по JSON
tuwilof
0
94
API Blueprint
tuwilof
0
89
Документирование API
tuwilof
0
200
Почему и как заменить все id на UUID
tuwilof
0
110
Other Decks in Programming
See All in Programming
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
0
1.7k
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
490
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
300
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
130
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
200
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
4.9k
Family mrubyの進捗
kishima
1
130
App Intentsのビルドプロセスを支える技術
kntkymt
0
410
Jetpack Compose メカニズム
skydoves
0
460
巨大モノリシックアプリ モダン化大作戦
ktcryomm
1
1.1k
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
150
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
510
Featured
See All Featured
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
65k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8k
The Cost Of JavaScript in 2023
addyosmani
55
10k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
The Invisible Side of Design
smashingmag
301
52k
Accessibility Awareness
sabderemane
1
220
Code Review Best Practice
trishagee
74
20k
Unsuck your backbone
ammeep
672
58k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
900
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
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
Вопросы?