1. Overview
Rails Session 은 우리가 알고있는 세션과 크게 다르지 않습니다.
사용자에 대한 일부 데이터를 저장하기 위해 사용합니다.
쿠키를 사용할 수도 있지만 외부에 노출되는 쿠키와 달리 서버에만 저장해야 하는 중요한 데이터들은 세션에 저장하면 편리합니다.
2. 사용법
Rails Session 은 Hash
처럼 사용하면 됩니다.
다른 Controller 에서 저장한 데이터를 꺼내 쓸 수 있습니다.
# app/controllers/index_controllers.rb
def create
# ...
session[:current_user_id] = @user.id
# ...
end
예를 들어 IndexController
에서 저장한 세션값을..
# app/controllers/users_controllers.rb
def index
# ...
current_user = User.find_by_id(session[:current_user_id])
# ...
end
UserController
에서 꺼내서 사용할 수 있습니다.
3. Session Stores
세션 저장소의 종류는 쿠키, 데이터베이스, Memcached, Redis 등등 다양합니다.
쿠키 세션 저장소를 제외한 모든 세션 저장소는 동일한 프로세스로 동작합니다.
3.1. Session 값 저장
session[:current_user_id] = 1
을 호출했는데 기존에 사용하던 세션(Session ID) 이 없는 경우- Rails 는
09497d46978bf6f32265fefb5cc52264
와 같은 임의의 Session ID 를 사용하여sessions
테이블에 새로운 record 를 저장 - 해당 record 의
data
속성에{current_user_id: 1}
(Base64-encoded) 값도 함께 저장 - 생성한 Session ID (
09497d46978bf6f32265fefb5cc52264
) 는Set-Cookie
를 사용하여 브라우저에게 전달
3.2. Session 값 가져오기
- 브라우저가 서버에 요청할 때
Cookie:
헤더를 사용해서 동일한 쿠키값을 전달- (1번 예시)
Cookie: _my_app_session=09497d46978bf6f32265fefb5cc52264; path=/; HttpOnly
- (1번 예시)
- 코드에서
session[:current_user_id]
을 호출 - 쿠키에 있는 Session ID 값으로
sessions
테이블에 있는 record 를 가져옴 - record 에 있는
data
속성에서current_user_id
값을 가져옴
Reference
'Framework > RubyOnRails' 카테고리의 다른 글
Ruby 기본 정리 (타입, 변수, 클래스, 모듈) (0) | 2022.07.10 |
---|---|
Ruby 의 as_json 과 to_json 의 차이 (0) | 2021.06.06 |
RSpec Test Frameworks (0) | 2020.07.14 |
RubyOnRails - nil? empty? blank? present? 차이점 (0) | 2020.07.14 |
Ruby Regular Expression (정규 표현식) (0) | 2020.07.14 |