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
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
41
Автоматизация Document-Driven Development для проектов с большим API
tuwilof
0
44
Инструменты для обнаружения рассинхронизации реализации “REST” API от документации
tuwilof
0
48
Валидация “REST” API по документации APIB
tuwilof
0
41
Негативное тестирование “REST” API и защита от него
tuwilof
0
330
Ликбез по JSON
tuwilof
0
86
API Blueprint
tuwilof
0
79
Документирование API
tuwilof
0
190
Почему и как заменить все id на UUID
tuwilof
0
91
Other Decks in Programming
See All in Programming
#QiitaBash MCPのセキュリティ
ryosukedtomita
0
350
ふつうの技術スタックでアート作品を作ってみる
akira888
0
200
Create a website using Spatial Web
akkeylab
0
310
「Cursor/Devin全社導入の理想と現実」のその後
saitoryc
0
560
5つのアンチパターンから学ぶLT設計
narihara
1
130
Julia という言語について (FP in Julia « SIDE: F ») for 関数型まつり2025
antimon2
3
980
エラーって何種類あるの?
kajitack
5
320
ruby.wasmで多人数リアルタイム通信ゲームを作ろう
lnit
2
300
エンジニア向け採用ピッチ資料
inusan
0
170
関数型まつりレポート for JuliaTokai #22
antimon2
0
160
来たるべき 8.0 に備えて React 19 新機能と React Router 固有機能の取捨選択とすり合わせを考える
oukayuka
2
870
LT 2025-06-30: プロダクトエンジニアの役割
yamamotok
0
600
Featured
See All Featured
It's Worth the Effort
3n
185
28k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Writing Fast Ruby
sferik
628
62k
Building Adaptive Systems
keathley
43
2.6k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
20k
Statistics for Hackers
jakevdp
799
220k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Become a Pro
speakerdeck
PRO
28
5.4k
A Tale of Four Properties
chriscoyier
160
23k
How to Ace a Technical Interview
jacobian
277
23k
Rebuilding a faster, lazier Slack
samanthasiow
82
9.1k
Thoughts on Productivity
jonyablonski
69
4.7k
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
Вопросы?