自定义登录页面
前置文档请先阅读:[用户体系建设](https://xuelangyun.feishu.cn/wiki/S4wswRnqRiXicHkNUFlcoh2knhf)安全模式介绍
轻应用版本支持四种安全模式:关闭(免登)、企业空间管理、第三方管理、SSO
关闭 (运行时免登录)
关闭登录之后,发布之后直接进入运行时页面(app.html)页面,不需要跳转登录页面,没有用户这一概念,右上角个人中心不可以配置登出功能。
企业空间管理
角色权限等交由平台的企业控制台管理,进入企业控制台进行角色、权限、企业人员等配置 分别有两种登录方式,也就是说登录页可以根据需要选择使用平台默认的登录页,或者自定义搭建的登录页:
- 平台登录页:用户访问应用时连接时登录页面如下,也就是平台的登录页面
- 自定义登录页:需要搭建一个登录页,并选择使用【默认登录】组件,根据需要开启或关闭右侧的配置项即可完成配置,页面上可以使用其他前端组件进行样式或功能配置调整,例如布局、图片、按钮等。
默认登录组件,采用的是共工平台的用户体系和权限管理能力,各个配置项含义如下:
- 账号登录:即通过共工账号密码的方式登录,默认开启,不可更改
- 验证码登录:即通过手机号或邮箱接收验证码的方式登录,默认开启,可关闭
- 注册:即是否支持在此登录页放置注册入口,默认开启,可关闭
- 图形验证码:是否开启图形验证码,默认开启,可关闭
【默认登录】组件是基于平台的登录功能封装的,使用的是平台的登录认证接口,因此终端用户仍需要用平台用户身份登录,和搭建用户是同一套体系
SSO 登录
SSO 功能指共工应用与 idaas 打通一种登录实现,目前只支持 Idaas SSO 能力。
登录页面不需要共工搭建,配置登录页面地址就可以
配置项填写说明- 所有字段均填写完整才能生效
- 针对不同平台,参数会不一样,目前仅支持 idass 一种
- loginUrl 和 logoutUrl 一般是多参数 key=value&key=value&.....形式,会较长,因此采用支持拖拽的长输入框
提交键值 | 标签名称 | 示例值 | 表单类型 | 说明 |
---|---|---|---|---|
clientType | 客户端类型 | idaas | 下拉框 (<=长度 10 字符) | 目前默认就 idaas 一种 |
clientId | 客户端 ID | a6c66bfa982140c5a8177ec75770e850 | input <=50 字符 | SSO 平台申请 |
clientSecret | 客户端密钥 | 91047a60-7d15-47a2-8ef9-72722219d39b | input <=50 字符 | SSO 平台申请 |
authHost | SSO 服务地址 | http://idaas-dev-toe.xuelangyun.com | input <=50 字符 | |
loginUrl | SSO 登录地址 | http://idaas-dev-toe.xuelangyun.com/#/login?response_type=code&scope=openid&state=af0ifjsadsldkj&client_id={client_id}&redirect_uri={loginCallbackUrl} | input <=300 字符 | {client_id}占位符表示取之前填写的 clientId 填入, {loginCallbackUrl}占位符表示取之前填写的 loginCallbackUrl 并 encoder 后填入 不用占位符自己直接写具体配置也是可以的 |
loginCallbackUrl | 登录回调地址 | /auth/idaasLogin | input <=50 字符 | 指向本应用,idaas 对应的回调地址,这里配置 uri,前面的 host 应用名,由运行时程序自动生成。 |
logoutUrl | SSO 登出地址 | http://idaas-dev-toe.xuelangyun.com/oidc/session/end?post_logout_redirect_uri={logoutCallbackUrl}&id_token_hint= | input <=300 字符 | {logoutCallbackUrl}占位符表示取之前填写的 loginCallbackUrl 并 encoder 后填入 不用占位符自己直接写具体配置也是可以的 |
logoutCallbackUrl | 登出回调地址 | /app.html | input <=50 字符 | 指向本应用 |
authTokenUri | 获取 TOKEN | /oidc/token | input <=50 字符 | 根据 code 换取 token 的地址 备注: token 接口返回用户少量信息,不同平台不一样,如 uid,name 等。 |
authUserInfoUri | 获取用户信息 | /oidc/me | input <=50 字符 | 查询用户信息的地址 备注:获取用户信息的专业接口 |
sync_user_switch | 是否同步用户 | 当 sso 登录跳转过来的用户不存在时,是否自动同步此用户信息 |
操作步骤如下:
- 应用设置中,安全模式设置为 SSO,按以上填写要求填写配置项
- 发布应用
现在访问应用可以看到已经是接入 SSO 登录的模式了,使用 idaas 登录页登录
第三方管理
在应用安全模式中选择第三方管理模式,并且关闭【应用内置组织架构及权限】开关。需要配置如下几项:
- 登录页配置:选择由自定义登录元件配置出来的登录页面,配置方式见后文【自定义登录】说明。
- 资源权限接口: 用于从外部系统获取用户及权限资源数据时使用,填写外部系统实现的自定义权限接口。
- 授权标识:用于认证的 key。
登录页面配置
自定义登录元件的功能类似数据视图,在内部放一系列输入元素构成一个表单,用于填写用户信息。
数据源可设置为逻辑或连接器,通过按钮提交表单数据传给登录接口,实现登录验证。
如下图所示,账号、密码、验证码都是单行文本输入框
验证码可以通过连接器获取,用图片组件展示
登录按钮配置
登录按钮配置点击事件(推荐使用高级函数配置);
点击后进行表单校验 -> 调用登录接口 -> 登录成功 SAVETOKEN 方法交换 token -> 登录失败处理。
配置的代码内容如下,可以复用在第三方登录页面场景,可直接复制修改相应组件 code 即可。
注意 SAVETOKEN({token: 'xxxxx' })
是共工提供的一个内置方法,在高级函数里面可以直接调用,这个方法主要是将连接器配置的登录接口返回值传给共工后端
// 1. 表单校验
EditableLogin_WczEM.validate().then(() => {
// 2. 校验成功之后调用登录接口连接器
API_externalLogin.request({
// 入参 账号 密码 验证码等
"username":EditableLogin_WczEM.getFormModel().count,
"password": EditableLogin_WczEM.getFormModel().passWord,
"code" : EditableLogin_WczEM.getFormModel().code,
"uuid" : DataView_aWLID.getFormModel().uuid
}).then(res => {
// 4. 登录接口调用回调处理 失败 提醒失败信息
if(res.error || (res.status == 400)) {
MESSAGE({
type: 'warning',
content: res.message
});
// 刷新验证码
DataView_aWLID.reload()
} else {
// 3. 成功之后调用 SAVETOKEN()方法,这一步不可缺少!
SAVETOKEN(res.data)
}
})
})
// 此代码段可以复用在第三方登录页面场景,可直接复制修改相应组件名即可
除登录组件和上面说明的登录事件之外,其他页面组件的用法和普通页面中一致,可以用于实现登录页上的其他样式或功能。