$30 off During Our Annual Pro Sale. View Details »
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
45
Автоматизация Document-Driven Development для проектов с большим API
tuwilof
0
46
Инструменты для обнаружения рассинхронизации реализации “REST” API от документации
tuwilof
0
51
Валидация “REST” API по документации APIB
tuwilof
0
44
Негативное тестирование “REST” API и защита от него
tuwilof
0
340
Ликбез по JSON
tuwilof
0
89
API Blueprint
tuwilof
0
83
Документирование API
tuwilof
0
200
Почему и как заменить все id на UUID
tuwilof
0
97
Other Decks in Programming
See All in Programming
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
180
JETLS.jl ─ A New Language Server for Julia
abap34
2
440
Vibe codingでおすすめの言語と開発手法
uyuki234
0
110
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
4
950
Deno Tunnel を使ってみた話
kamekyame
0
220
Cell-Based Architecture
larchanjo
0
140
AIコーディングエージェント(Gemini)
kondai24
0
260
Patterns of Patterns
denyspoltorak
0
230
TestingOsaka6_Ozono
o3
0
170
Cap'n Webについて
yusukebe
0
150
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
160
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
410
Featured
See All Featured
Joys of Absence: A Defence of Solitary Play
codingconduct
1
260
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.2k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.7k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
0
62
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Become a Pro
speakerdeck
PRO
31
5.7k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
We Are The Robots
honzajavorek
0
120
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
170
Optimising Largest Contentful Paint
csswizardry
37
3.5k
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
Вопросы?