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
46
Автоматизация Document-Driven Development для проектов с большим API
tuwilof
0
48
Инструменты для обнаружения рассинхронизации реализации “REST” API от документации
tuwilof
0
53
Валидация “REST” API по документации APIB
tuwilof
0
45
Негативное тестирование “REST” API и защита от него
tuwilof
0
340
Ликбез по JSON
tuwilof
0
91
API Blueprint
tuwilof
0
85
Документирование API
tuwilof
0
200
Почему и как заменить все id на UUID
tuwilof
0
100
Other Decks in Programming
See All in Programming
TipKitTips
ktcryomm
0
170
ポーリング処理廃止によるイベント駆動アーキテクチャへの移行
seitarof
3
1.1k
RAGでハマりがちな"Excelの罠"を、データの構造化で突破する
harumiweb
9
2.8k
new(1.26) ← これすき / kamakura.go #8
utgwkk
0
2.3k
文字コードの話
qnighy
44
17k
Swift ConcurrencyでよりSwiftyに
yuukiw00w
0
260
DevinとClaude Code、SREの現場で使い倒してみた件
karia
1
1k
nuget-server - あなたが必要だったNuGetサーバー
kekyo
PRO
0
250
Claude Code Skill入門
mayahoney
0
360
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
350
Docコメントで始める簡単ガードレール
keisukeikeda
1
120
CDIの誤解しがちな仕様とその対処TIPS
futokiyo
0
210
Featured
See All Featured
Ruling the World: When Life Gets Gamed
codingconduct
0
170
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
110
Large-scale JavaScript Application Architecture
addyosmani
515
110k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
67
37k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
640
Practical Orchestrator
shlominoach
191
11k
Being A Developer After 40
akosma
91
590k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
120
Un-Boring Meetings
codingconduct
0
220
Building an army of robots
kneath
306
46k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
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
Вопросы?