Trong Ruby on Rails, mặc định, phiên làm việc được lưu trữ trong cookie trên trình duyệt của người dùng, mang theo rủi ro về an ninh dữ liệu. Hơn nữa, giới hạn dung lượng cookie của trình duyệt là 4kb, vượt quá sẽ gây lỗi và không thể lưu thêm thông tin phiên làm việc. Để giải quyết vấn đề này, việc lưu trữ phiên trên cơ sở dữ liệu hoặc Redis được đề xuất.
Trong bài viết này, trang web vinascript.com sẽ hướng dẫn cách lưu trữ phiên trên Redis Server, một ứng dụng lưu trữ dữ liệu trong bộ nhớ.
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. 🙂