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

时间:2024-04-11 08:18:29

我认为啊,技术教程得先讲下是针对哪个版本,这样大家实践之后的成功率应该会高很多,所以首先看我这篇教程的畅言版本:

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

现在是17年的1月24号,畅言大概是两个多月前瘫痪了一次,技术支持群里就沸腾了,有的人很愤怒啊,“全国几十万站点用你们插件,说挂就挂了?”,也有人很宽容啊,“怎么说也是免费的,别要求那么高嘛”。作者其实也是那时刚开始接触畅言,当时比较了几款同类评论插件,感觉还是畅言最合我意,UI设计的比较跟得上时代潮流,不是一看很古板很落伍的那种,功能看起来也蛮强大的,加上搜狐也算土财亲爹,感觉有保障,那就用它吧。

我的网站装了畅言插件之后,评论体系是好了,普通用户不注册也可以评论了,但是不可避免的问题就是我网站自己的用户登录和畅言的登录怎么打通,这也就是单点登录的问题了。之前畅言的版本里,单点登录类型有两种,一种是完全的单点登录,还有一种是以网站为主的单点登录,那现在其实就剩第二种了。第一种取消了好像是因为会给畅言带来问题吧,还是设计不合理什么的,因为我也不是畅言的开发人员,具体就不是很了解了。

那么现在畅言的单点登录只剩以网站为主的单点登录这一种了,其设计流程是什么样呢?分为以下几种情况:

1、当用户端浏览器跳转到含有畅言插件的页面时,畅言会控制当前操作用户的浏览器访问【获取用户信息接口URL】,此接口返回该用户在该网站是否已登录,如果未登录则畅言不用登录,如果已登录则畅言需同步登录,畅言会根据【获取用户信息接口URL】获得user_id、用户昵称、头像链接地址等信息填充自己插件的头像区,昵称区,当然最重要的是要记录下该网站的某某用户已经登录了。

所以双方都没登录时,是下图的效果:

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

点击个人网站的登录按钮或者是点击畅言的那个圆的登录按钮时,这时其实进行的是同一个操作:跳转到登录页面或者是弹出登录框。这里其实也就是畅言的登录合并到网站的登录里去了,畅言不需要自己登录QQ号、手机号、微博、微信的那些了,畅言现在登录时就直接登录用户自己的网站,所以当点击个人网站的登录按钮或者是点击畅言的那个圆的登录按钮时,我这边是设置的弹出一个自己网站的登录框(即登录行为是js弹窗登录),效果如下:

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

弹出来的这个框是网站自己的,只不过我是仿畅言的布局和图标了。如果你在畅言里登录行为是设置了打开新页面登录,那么点击畅言的圆登录按钮后,就会出现一个浏览器自带的弹窗,弹窗的地址就是你在畅言的单点登录里设置的【打开新页面登录】的地址,因为自带的弹窗好像会被拦截拦截,效果也比较丑,我就没用了,自己用了个弹出层。登录成功之后,网站和畅言就都登录了,畅言之所以能登录就是因为【获取用户信息接口URL】返回了用户已登录的相关信息,畅言会通过cookie来保存该用户的已登录状态(不过页面不刷新能不能同步登录,这个我还没试过,估计应该也可以吧)。所以现在版本的畅言也就不需要以前版本的那个登录接口了,因为现在畅言登录就等于网站登录。

退出也很简单,如果网站退出了,那就在退出时通过src来跨域清畅言的登录cookie,如果畅言退出了,会自动调用设置好的【用户退出接口URL】接口来实现网站的注销登录,这样就实现了注销登录的同步。

这篇主要讲的是畅言当前版本的单点登录设计流程,下面再讲一下具体实现时会遇到哪些问题。