leanCloud单点登录

有没有通过leanCloud实现单点登录的demo?

主要是想了解不同域名之间如何共享登录状态。

我能想到的方法是在主应用里自己手动做oauth provider,然后子应用通过标准第三方接入来做单点登陆。

我知道不同应用之间可以共享User,以实现共享用户。可是web端无法实现,因为不同应用不同域名,无法共享状态,也无法跳转。总不能每个应用一个登陆,那样的话,用户在应用A登陆,然后去应用B,相同账户还要登录一遍。

有没有什么更好的方法实现?
leanCloud官方有没有计划推出这方面的实现?

这是一个好问题,非常感谢反馈。

AV.User 是一个比较通用的账号体系,能够比较快速实现账号系统。
不过确实不支持 SSO(单点登录),但是 LeanCloud 是灵活的。
建议可以将鉴权自己来做,在 LeanEngine(云代码)中通过生成 token 来鉴权,
然后在 LeanEngine 中去调用 AV.User 这个账号体系即可。

这样相当于 SSO 部分,你们自己搞了,账号系统逻辑通过 LeanEngine 中使用 AV.User 。

用户在应用A登录后,获取sessionToken,然后将sessionToken传到应用B,在应用B里面可以通过AV.User.become(sessionToken, options) 来登录,是这样一个流程吗。

become 是一个比较通用的通过传入 token 登录的方式,与单点登录关系不大。单点登录需要能够踢掉其他已登录的设备,这个可以通过 LeanEngine 中移除掉旧的 token 之类的办法实现。

在LeanEngine中如何移除旧的token,用AV.User.become(sessionToken, options),并不能移除旧的token

我的意思是,将这个 token 自己在数据表中存储一下。相当于某个用户此时某个 token 是有权限的需要自己记录一下。SDK 目前没有单点登录的功能。

如:A 用户当前起效的 token 是 aaaaa,当他通过没有 token 的地方登录并且通过了校验之后,给他 set 一个新的 token,同时修改数据表中对应的 token,比如更改为 bbbbb,那么 aaaa 这个 token 就失效了,从而实现单点登录。

我的理解是这样的。
目前SDK是支持多个设备同时登录的。如:IOS客户端用户名和密码登录得到sessionToken和Android客户端用户名和密码登录得到sessionToken都是一样的,而且两个客户端都可以操作。
现在,在用户表_User再加入一个token字段,客户端用用户名和密码登录或者是用sessionToken登录,都会重新生成一个token,返回给客户端。然后客户端每次操作都把客户端token和服务器的token对比,如果相同则操作。
这样,用户在IOS端登录后拿到token,然后再在Anroid端登录又拿到token,这时IOS端token就失效了。

对的,就是需要重新生成一个 token,保证 token 的唯一性,就是单点登录了。

那不是所有api请求都得先用重新生成token来验证,自己写云函数啊。