[Ruby on Rails] Sử dụng Redis để lưu trữ session, cookie


Trong Ruby on Rails, mặc định session sẽ được lưu trên cookie trên trình duyệt của client. Vì vậy điều này phát sinh rủi ro về bảo mật dữ liệu phiên làm việc của người dùng. Ngoài ra cơ chế của trình duyệt chỉ cho lưu trữ cookie với dung lượng tối đa là 4kb. Nếu vượt quá 4kb, thì ứng dụng Rails của bạn sẽ phát sinh lỗi và không thể lưu thêm thông tin vào session được nữa. Vì vậy giải pháp được đưa ra là lưu trữ session trên database hoặc Redis.

Trong bài viết này, vinasupport.com sẽ hướng dẫn các bạn lưu trữ session trên Redis Server, một ứng dụng lưu trữ dữ liệu trên memory.

Hướng dẫn cài đặt Redis Server

Tiền đề bài viết này là mình sử dụng Ubuntu 16.04, và đã cài đặt Ruby on Rails trên Ubuntu

sudo apt-get install redis-server redis-tools

Kiểm tra Redis đã cài đặt thành công chưa? Sử dụng lệnh redis-cli ping. Nếu kết quả trả về “PONG” như bên dưới là chúng ta đã cài đặt thành công.

Cấu hình Ruby on Rails sử dụng Redis

– Sửa file Gemfile của Ruby on Rails thêm dependency của Redis

# Redis store
gem 'redis-rails'
gem 'redis-store', '~> 1.4.0'

– Chạy command bundle để update lại gem

bundle update

– Tạo file có đường dẫn: config/initializers/session_store.rb với nội dung như bên dưới

Rails.application.config.session_store :redis_store,
                                       secure: false,
                                       servers: redis://127.0.0.1:6379/0/session,
                                       expire_in: 604800

Bây giờ dữ liệu của session trong ứng dụng Rails của bạn đã được lưu trên Redis, thay cho lưu trên Cookie của trình duyệt rồi đấy. 🙂

Nguồn: vinasupport.com

 

             
SHARE

Bài viết liên quan

mode_edit Bình luận của bạn

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

account_circle
web