Rails中不同应用同一域名下的不同子域共享session设置

[背景/应用场景]

在不采用多应用单点登录的情况下,当不同应用之间希望实现自动登录的功能

共享用户数据库或类似的情况下, 而且不同应用部署在同一域名下的不同子域名,需要在一个应用登录之后,在另一个应用自动登录

[Rails中的设置]

设置不同应用之间相同的secret_token 和 session store的domain设置

AppName::Application.config.secret_token = '......'
AppName::Application.config.session_store :cookie_store, key: '_cookie_name', domain: :all

务必保证secret_token和_cookie_name在不同应用之间的设置一致

[测试]

1. 在完成设置后进行测试,在开发环境下,首先设置/etc/hosts文件

127.0.0.1 *.lvh.me

2. 假设你有应用 app1, app2

当你访问app1.lvh.me时候设置了session

session[:user] = user.id

在你访问app2.lvh.me的时候,浏览器会自动将app1设置的session发送到app2,这样就可以在app2中取得session[:user],而实现自动登录

[补充]

当你在一个应用里采用子域的方式的来划分用户的时候,也需要对Rails的session store domain进行相同的设置

  

转载于:https://www.cnblogs.com/kamechen/p/3140281.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值