利用socket.io来rails中实现简单的sso

看到Rails圣经中CAS方案实现sso,太过折腾,对于验证在线,其实用socket.io可以实现。

这里用一个很简单地例子来描述怎么实现类似sso的功能。

首先需要一个rails项目,其中devise提供用户系统。

加入socket.io asset的gem/或者用rails-bower安装一个socket.io:

gem 'socket.io-rails'

sso的服务端用socket.io来对线上所有客户端发送一条数据 即:

io.on('connection', function (socket) {
    socket.on('uid', function (data) {
    io.emit('uid' , data);
});

在我们的rails中:

      var socket = io('http://xxxx:8888');
      socket.emit('uid', { id: <%=current_user.id%> , session_id: "<%=request.session_options[:id]%>" });

      socket.on('uid' , function(data){          if(data.id == <%=current_user.id%> && data.session_id != "<%=request.session_options[:id]%>")
          {              window.location.href = "<%=warning_path%>";
          }
      });

验证当前的uid是否存在于别的客户端,如果sessionid不同,应该会是其他设备登陆,然后跳转到提醒。

这只是一个思路,验证做的很简单。

转载于:https://my.oschina.net/imot/blog/414806

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值