门户V2第三方密码登录
案例需求
第三方系统登录后,点击平台链接,实现免密码登录
知识点
1.门户登录定制 2.实现第三方系统登录校验
开发过程
使用租户管理员登录系统,在“应用/服务管理”新增企业门户V2,开启门户定制(详细操作步骤可参考 门户V2调试)
进入云端开发后,找到市场组件“门户自定义”,并开启组件定制
进入到“代码”模块下,在“\UI2\comp\portalConfig\components\portalConfig”组件目录下,对“portalConfig.config.js”(文件命名:组件名+“.config.js”,不能随便定义)进行定制编辑,文件基础内容如下所示: ```js import { merge } from "lodash"; import ConfigContextProcessor from 'core/framework/ConfigContextProcessor'; import UserInstance from '$UI/wxsys/comps/uixContainer/UserImplement'; import React from 'react';
export default {
processConfigContext(configContext) {
},
//自定义
async onConfigContextInit(configContextProcessor) {
//获取当前页
let _this = configContextProcessor.page;
//按照需要处理的文件路径及方法进行自定义
//@after:方法执行后执行;参数:(result,...args),其中result是方法返回数据,args是原方法自带参数
//@before:方法执行前执行;参数:(...args),其中args是原方法自带参数
//@replace:替换原方法;参数:(...args),其中args是原方法自带参数
//注意:上述3中方法,async标识必须与原方法同步,即原方法是异步,现在自定义方法才能使用异步,否则不能使用
//详细使用案例可以参考“帮助中心”下门户v2定制下相关案例
let portalConfig = {
"config": {
"/entry": {
"/pcxapp": {
"/pcx": {
"/user":{
"/login.w": {
"onInitState": {
"@before":async()=>{
try {
//判断登录获取用户信息
let userInfo=await UserInstance.checkLogin(_this);
//登录成功逻辑处理
} catch (error) {
//用户没有登录,跳转到第三方登录页面
//window.top.location="https://baidu.com";
let res=await this.request({url:"http://cas认证",method:"post"});
//验证逻辑,权限验证成功,进行登录回调调用(详细参考:"帮助中心-->开发手册-高级--->集成--->OAuth2标准集成方案")
}
}
}
}
}
}
}
}
}
};
//处理自定义内容
merge(_this.configContext, portalConfig);
ConfigContextProcessor.enhancePageAdvice(_this);
}
} ```
- 编写登录回调服务,详细实现可参考 OAuth2标准集成方案