Oauth2做web端SSO的一些临时想法

今天看文章讲sso,列一下我做用户中心时的一些想法。


用户中心(ucenter)与业务系统同域和业务系统是移动端的情况略过不提,列下web端跨域时的一些想法.


1、页面跳转式(标准模式)

用户进入第一次业务系统时处于未登陆状态。需要做一些登陆才能完成的操作时,业务系统引导用户跳转到ucenter提供登陆页。用户登陆完成后附带上用户code跳转回业务系统,业务系统读取用户code从ucenter获取用户token。

优点是实现简单快捷,缺点是用户进入后不能直接看到自己状态。可以靠iframe嵌入用户中心的一个特殊页面解决。


2、ucenter jsonp模式

ucenter实现一个jsonp api,调用时返回用户信息(已登陆)或提醒用户未登录。返回的用户信息可以为用户code或加密后的token。形如window.currentUserInfo={logged:success,code:"XXXX",username:"xxxxxx",avatar:"http://xxx/xxx.jpg"}或者window.currentUserInfo={logged:success,access:已加密的({access_token:xxxxxx,refresh_token:yyyyyyyy})  ,username:"xxxxxx",avatar:"http://xxx/xxx.jpg"}

业务系统页面上加一段代码,判断用户是否已登陆,若未登陆则以添加script的形式嵌入这个api。后续嵌入js读取信息,按业务需求返回给业务后台读取用户信息。


3、业务系统jsonp模式

业务系统实现一个jsonp api (形如http://a.com/jsonp.php),将其注册到ucenter。 ucenter实现一个302跳转 api,调用时读取referer信息判读来自哪个业务信息,然后将用户code作为参数附加到业务系统预先定义的api url后面(形如http://a.com/jsonp.php?code=xxxxx)。

业务系统页面上加一段代码,判断用户是否已登陆,若未登陆则以添加script的形式嵌入这个ucenter的302 api。业务系统后台读取到用户code后从ucenter得到用户信息,按业务需求返回合适信息给前台。

与前一个模式相比,优点是返回的数据结构由业务系统控制,更易于后续操作。


4、设置Access-Control-Allow-Origin

业务系统直接读取ucenter关于用户信息的api,优点是实现最简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值