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