【原创】畅言实现单点登录的设计流程和技术细节(2/2)

讲一下具体实现时遇到的几个问题:

首先第一个是调试的问题,我一开始以为要部署到现网畅言才会调用我填的那两个接口,后来发现其实改下HOSTS文件就行了,把域名改成127.0.0.1,这样就可以进行单点登录的本地调试了,如下图:

blob.png

只不过后来发现这样也存在一个问题,就是畅言可以设置单点登录的开关,如果设置了打开单点登录,但是对应的接口又没有部署上去或者不能用之类的,那畅言的评论体系就不工作了,这也略有点坑,因为你想要本地调试就得打开单点登录的开关,那调试的阶段现网的畅言就用不了了,只不过也可以想想其他办法。

其次是改版的坑,网上倒是有点点攻略吧,但是讲得也比较简略,而且都是填三个接口的旧版本,多的那个就是畅言登录后调用让网站也同步登录的那个接口,然后畅言官网的接口说明文档和DEMO里也都不去掉,搞得我一直很疑惑这个接口到底有没有用,现在我可以告诉大家了,这接口已经废了,不用看了。现在的设计存在的问题就是,如果别人在其他网站登录了畅言,再跑到你的网站来,那他的畅言还是是登录着的,但是在你的网站是没有登录的,这样账号体系感觉就有点混乱,所以恐怕这也是用了评论插件的一个弊端吧,毕竟不是自己的。

然后当时开发时最大的疑惑就是畅言调用getUserInfo时,我怎么知道畅言是想了解哪个用户的登录状态呢?这是因为我一开始以为是畅言那端来调用这个接口,看demo也讲得很含糊啊,网上又没有什么靠谱的教程,再加上我还没来得及动手调试还处于理论阶段,所以一直没想通,后来一活动分分神,突然想起来这个接口应该是用户端的浏览器调用的啊,这样随便是session还是cookie记录登录状态不就都知道是哪个用户嘛,难怪调用接口时就callback一个参数,好吧,后来用Network一看,果然这个接口是客户端浏览器调用的,还是对插件的原理不熟悉啊。getUserInfo的示意代码见图:

blob.png

其中返回json时用的JSONObject是net.sf.json包里的,当然也可以参考官网Demo的写法。

同步注销相对简单一点,如果是个人网站退出,调用一下畅言的接口把畅言也注销掉就行,如果是畅言端注销登录,就会调用【用户退出接口URL】,把个人网站上的登录注销掉,所以注销是两端同步的,代码如下:

blob.png

blob.png

其中cyLout.js其实就一句话:location.reload(),就是页面刷新一下,如果像局部刷新也是可以的,但是弹窗登录那块,那天问了畅言官方群里的管理员,说弹窗登录只能整页刷新,所以退出我索性也整页刷新吧。

最后还是要吐槽一下官网的接口说明文档和demo,不更新也就算了,讲得还那么含糊,网友的攻略又很少,希望我这篇攻略能给大家带来些帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值