[RUBY-ON-RAILS] 레일 API 응용 프로그램에 추가 쿠키 세션 저장소를 다시
RUBY-ON-RAILS레일 API 응용 프로그램에 추가 쿠키 세션 저장소를 다시
나는 레일-API 응용 프로그램을 가지고있다. 더 많은 이하 "상자 밖으로"그러나 나는 다시 쿠키 기반 세션 저장소를 추가 할. 여기에 내가 무슨 짓을했는지 있습니다 :
응용 프로그램 / 컨트롤러 / application_controller.rb
+ include ::ActionController::Cookies
설정 / application.rb
+ config.middleware.insert_after ActiveRecord::QueryCache, ActionDispatch::Cookies
+ config.middleware.insert_after ActionDispatch::Cookies, ActionDispatch::Session::CookieStore
생성 설정 / 초기화 / secret_token.rb
+ Namespace::Application.config.secret_token = 'token'
생성 설정 / 초기화 / session_store.rb
+ Namespace::Application.config.session_store :cookie_store, :key => '_namespace_key'
내가 컨트롤러에서 세션을 검사 할 때 결과 :
<Rack::Session::Abstract::SessionHash:0x3fdadc5daa24 not yet loaded>
그러나 해당 데이터가 기록되고 사용되는 표시한다.
그러나, 브라우저에서 쿠키 자체는 '_session_id'대신 '_namespace_key'로 명명되고있다
나는 쿠키 기반 세션 저장에 필요한 모든 부분을 다시 추가 생각하지만 난 뭔가 다른 누락 한 것으로 나타났습니다. 어떤 아이디어?
해결법
-
==============================
1.당신은 당신의 application.rb 파일에서 이러한 미들웨어 선언을 제거하고이를 추가해야합니다 :
당신은 당신의 application.rb 파일에서 이러한 미들웨어 선언을 제거하고이를 추가해야합니다 :
config.api_only = false
(당신이) 당신의 initialisers의 구성 session_store의 어딘가가있는 경우이 세션 관리 당신이 원하는 방식을 가능하게 할 것이다. 이 명확하게 문서화되어 있지 않습니다,하지만 당신은 어떻게해야하는지입니다.
여기 예.
-
==============================
2.당신이 레일 (5)에있어, 그리고 유지하려는 config.api_only 진정한 = 경우에 당신은 설정 / application.rb에서 클래스 응용 프로그램 <레일 : 응용 프로그램 후이 코드를 추가, 세션 레이어를 추가 할 수있는 미들웨어를 확장 할 수
당신이 레일 (5)에있어, 그리고 유지하려는 config.api_only 진정한 = 경우에 당신은 설정 / application.rb에서 클래스 응용 프로그램 <레일 : 응용 프로그램 후이 코드를 추가, 세션 레이어를 추가 할 수있는 미들웨어를 확장 할 수
config.middleware.use ActionDispatch::Cookies config.middleware.use ActionDispatch::Session::CookieStore, key: '_namespace_key'
이것은 당신이 갖고 싶어 할 때 API 만 사용 가능 응용 프로그램을 레일 편리하지만 ActiveAdmin을 또는 Rails_Admin 같은 관리 패널 사용자 세션을 관리 할 수 있습니다.
-
==============================
3.당신은 전체 레일 스택을 사용하지 않기 때문에이 라인은 무시된다 :
당신은 전체 레일 스택을 사용하지 않기 때문에이 라인은 무시된다 :
::Rails.application.config.session_store :cookie_store, :key => '_namespace_key'
그래서 그 대신, 세션은 여기에서 설정 한 기본 세션 키를 사용하고 있습니다. 그러나, 당신은 대체하여 직접 이러한 인수를 전달할 수 있습니다 :
config.middleware.insert_after ActionDispatch::Cookies, ActionDispatch::Session::CookieStore
와:
config.middleware.insert_after ActionDispatch::Cookies, ActionDispatch::Session::CookieStore, :key => '_namespace_key'
(일부는 레일 모듈 오버라이드 (override) 할 수 있기 때문에 기본값의 거친 아이디어,) 여기에 전달할 수있는 옵션의 전체 목록입니다.
from https://stackoverflow.com/questions/15342710/adding-cookie-session-store-back-to-rails-api-app by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 레일에 루비와 루비의 차이점은 무엇입니까? (0) | 2020.02.19 |
---|---|
[RUBY-ON-RAILS] JSON과 날짜를 레일 (0) | 2020.02.19 |
[RUBY-ON-RAILS] 레일의 링크로 테이블 행 만들기 (0) | 2020.02.19 |
[RUBY-ON-RAILS] 테이블을 조인 명명 규칙 레일 (0) | 2020.02.19 |
[RUBY-ON-RAILS] 레일 콘솔 : 재 장전! 모델 파일의 변화를 반영하지? 가능한 이유 무엇을 할 수 있을까? (0) | 2020.02.19 |