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
Webの外へ飛び出せ NativePHPが切り拓くPHPの未来
takuyakatsusa
2
440
Select API from Kotlin Coroutine
jmatsu
1
190
『自分のデータだけ見せたい!』を叶える──Laravel × Casbin で複雑権限をスッキリ解きほぐす 25 分
akitotsukahara
1
580
エンジニア向け採用ピッチ資料
inusan
0
170
Cline指示通りに動かない? AI小説エージェントで学ぶ指示書の書き方と自動アップデートの仕組み
kamomeashizawa
1
590
20250613-SSKMvol.15
diostray
0
100
Railsアプリケーションと パフォーマンスチューニング ー 秒間5万リクエストの モバイルオーダーシステムを支える事例 ー Rubyセミナー 大阪
falcon8823
4
1k
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
230
ruby.wasmで多人数リアルタイム通信ゲームを作ろう
lnit
2
290
Is Xcode slowly dying out in 2025?
uetyo
1
220
すべてのコンテキストを、 ユーザー価値に変える
applism118
2
950
Bytecode Manipulation 으로 생산성 높이기
bigstark
2
380
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
69
11k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
Unsuck your backbone
ammeep
671
58k
How STYLIGHT went responsive
nonsquared
100
5.6k
Fireside Chat
paigeccino
37
3.5k
Into the Great Unknown - MozCon
thekraken
39
1.9k
Rebuilding a faster, lazier Slack
samanthasiow
82
9.1k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
24k
The Pragmatic Product Professional
lauravandoore
35
6.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
Вопросы?