第三方自动登录并打开页面

第三方集成时,往往需要不显示登录页,直接打开页面。系统提供使用 token 进行身份认证,验证后打开页面的方法。

例如要打开的页面地址为 pageUrl,提供用户的 token,使用下面的 URL 即可直接打开页面

http://门户域名/login?token={userToken}&redirectUrl={pageUrl}

该方法网关负责自动登录,并且重定向。参数说明如下

  • token:用户的 token
  • redirectUrl:要打开页面的 URL

redirectUrl 的写法

打开桌面端页面

页面 URL 为:/服务名/pcxapp/pcx/页面名

例如:/react/pcxapp/pcx/infoPublish/infoPub

桌面端页面的 URL 的写法参考《单独打开桌面端页面

打开显示门户的页面

redirectUrl 参数值为:/entry/pcxapp/#/entry/pcxapp/pcx/index/#/服务名/pcxapp/pcx/页面名

例如:/entry/pcxapp/#/entry/pcxapp/pcx/index/#/react/pcxapp/pcx/infoPublish/infoPub

访问 URL 为:http://门户域名/login?token={userToken}&redirectUrl=/entry/pcxapp/#/entry/pcxapp/pcx/index/#/服务名/pcxapp/pcx/页面名

例如:http://entrydevguide8-vip.trunk2.xcaas.com:8800/login?token=system@123&redirectUrl=/entry/pcxapp/#/entry/pcxapp/pcx/index/#/react/pcxapp/pcx/infoPublish/infoPub

打开隐藏门户的页面

redirectUrl 参数值为:/entry/pcxapp/#/entry/pcxapp/pcx/index/?portalType=embedded#/服务名/pcxapp/pcx/页面名

例如:/entry/pcxapp/#/entry/pcxapp/pcx/index/?portalType=embedded#/react/pcxapp/pcx/infoPublish/infoPub

访问 URL 为:http://门户域名/login?token={userToken}&redirectUrl=/entry/pcxapp/#/entry/pcxapp/pcx/index/?portalType=embedded#/服务名/pcxapp/pcx/页面名

例如:http://entrydevguide8-vip.trunk2.xcaas.com:8800/login?token=system@123&redirectUrl=/entry/pcxapp/#/entry/pcxapp/pcx/index/?portalType=embedded#/react/pcxapp/pcx/infoPublish/infoPub

打开不带门户的页面

redirectUrl 参数值为:/服务名/pcxapp/#/服务名/pcxapp/pcx/页面名

例如:/react/pcxapp/#/react/pcxapp/pcx/infoPublish/infoPub

访问 URL 为:http://门户域名/login?token={userToken}&redirectUrl=/服务名/pcxapp/#/服务名/pcxapp/pcx/页面名

例如:http://entrydevguide8-vip.trunk2.xcaas.com:8800/login?token=system@123&redirectUrl=/react/pcxapp/#/react/pcxapp/pcx/infoPublish/infoPub

打开移动端页面

页面 URL 为:/服务名/mobileapp/mobile/页面名

例如:/react/mobileapp/mobile/infoPublish/infoPub

redirectUrl 参数值为:/entry/mobileapp/#/服务名/mobileapp/mobile/页面名

例如:/entry/mobileapp/#/react/mobileapp/mobile/infoPublish/infoPub

访问 URL 为:http://门户域名/login?token={userToken}&redirectUrl=/entry/mobileapp/#/服务名/mobileapp/mobile/页面名

例如:http://entrydevguide8-vip.trunk2.xcaas.com:8800/login?token=system@123&redirectUrl=/entry/mobileapp/#/entry/mobileapp/mobile/infoPublish/infoPub

特别说明

  • token 和 redirectUrl 参数的值,需要使用 encodeURIComponent 编码

获取用户 token

登录后获取

系统提供 API,用户登录后,获取当前用户的 token,API 说明如下

URL:
    /uaa/userinfo?type=token
请求方法:
    GET
返回值:
    当前用户信息,包括 token

示例如下:

http://entrydevguide8-vip.trunk2.xcaas.com:8800/uaa/userinfo?type=token

返回结果中的 token 即为用户 token

{
    "userId":null,"username":null,"name":null,"phoneNumber":null,"email":null,"previousLogonTime":null,"sub":null,"token":"system@FVDyd7Wuv8GkdY56PYvhmN8HqvROEUrjZ4oDZfo%2Bldw%3D",
    "user_name":null,"user_id":null,"given_name":null,"previous_logon_time":null,"phone_number":null
}

使用用户名获取

系统提供 API,通过用户名获取用户 token,API 说明如下

URL:
    /uaa/sso/token 
请求方法:
    post
参数:
    expire:限制可用时长(单位:秒),不必填。设置为30,表示获取后30秒内可用,超过30秒就不能用于登录了;不设置表示 token 长久有效
    username:用户名,例如:zhangsan
    credentialToken: 系统环境变量 CREDENTIAL_TOKEN
返回值:
    用户 token

Java 示例代码如下

    // 获取环境变量 CREDENTIAL_TOKEN
    String credentialToken = ContextUtil.getEnv("CREDENTIAL_TOKEN");
    // 获取 token
    String token = ServiceUtil.post(SpringWebUtil.getRequest(), "entry",
        "/uaa/sso/token?username=" + username + "&credentialToken=" + credentialToken, null, String.class);

特别说明

  • 第三方调用这个 API 去获取 token 时要进行安全验证或者权限控制,否则就相当于把密码泄露出去了
  • token只是用了登录的,登录后生成user_session,user_session超时才会到登录页面,token失效只是不能用这个token登录

打开页面方式总结

打开方式 特点 处理 navigateBack
打开显示门户的页面 通过门户打开目标页,归门户管理,
会获得门户配置 configContext,例如:多语言、皮肤等
关闭打开的目标页,回到门户首页
打开隐藏门户的页面 通过门户打开目标页,不归门户管理,
会获得门户配置 configContext,例如:多语言、皮肤等
iframe 嵌入:
发送关闭页面消息到 parent
window.open 新标签页:
发送关闭页面消息到 opener,同时关闭页面
超链接跳转:
history back 回到上一个页面
打开不带门户的页面 直接打开目标页,注意:服务路由kong2必须走。
不会获得门户配置 configContext,适用于需要性能
并且不关心 configContext 的场景,
如果没有性能要求,推荐使用“打开隐藏门户的页面”
纯粹的页面,只发送通知,需要被管理
iframe 嵌入:
发送关闭页面消息到 parent
window.open 新标签页:
发送关闭页面消息到 opener
超链接跳转:
history back 回到上一个页面

results matching ""

    No results matching ""