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
180
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
25
Автоматизация Document-Driven Development для проектов с большим API
tuwilof
0
38
Инструменты для обнаружения рассинхронизации реализации “REST” API от документации
tuwilof
0
30
Валидация “REST” API по документации APIB
tuwilof
0
28
Негативное тестирование “REST” API и защита от него
tuwilof
0
290
Ликбез по JSON
tuwilof
0
76
API Blueprint
tuwilof
0
63
Документирование API
tuwilof
0
100
Почему и как заменить все id на UUID
tuwilof
0
72
Other Decks in Programming
See All in Programming
孤独のCTOグルメという やや奇抜な企画をやった目的と効果
shoheimitani
3
1k
自動テスト実行結果の目的を整理する / Organizing objectives of automated test results
twada
PRO
10
2.1k
Go1.22からの疑似乱数生成器について/go-122-pseudo-random-generator
convto
1
160
クソコード動画『カプセル化 Mk-II』 で考える 上手くカプセル化できない理由 / encapsulation2
minodriven
11
7.1k
Material 3で Material 2ぽい見た目にする
numeroanddev
2
250
Docker ハンズオン / docker-hands-on
suzukihoge
51
16k
Enhancing Applications with Accessibility API
kishikawakatsumi
3
810
Some Quick Ideas To Improve Your Tests ( #jassttokyo )
teyamagu
PRO
2
2.3k
Crafting a Own PHP - ウキウキ手作りミニマリストPHP
uzulla
4
1.1k
Building a Smaller App Binary
kateinoigakukun
2
190
Ruby製社内ツールのGo移行
bgpat
2
260
WasmOS: Wasmを実行する自作Microkernel
riru
0
370
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
60
6.6k
The Pragmatic Product Professional
lauravandoore
24
5.7k
Designing for humans not robots
tammielis
247
25k
Clear Off the Table
cherdarchuk
82
310k
Faster Mobile Websites
deanohume
296
30k
Code Reviewing Like a Champion
maltzj
512
39k
Designing with Data
zakiwarfel
94
4.8k
Documentation Writing (for coders)
carmenintech
59
3.8k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
240
1.2M
The Invisible Side of Design
smashingmag
293
49k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
24
2.2k
A Philosophy of Restraint
colly
195
15k
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
Вопросы?