🔒 简单登录
适用环境 | 私有部署 |
能力废弃说明
此能力自2024年4月18号起已废弃。相关需求需要类似能力,请向开放平台提新的需求单 。
要求
ONES |
---|
v3.6.0+ |
概述
该能力让每个插件开发者可以实现自己的登录校验逻辑,越过原本 ONES 的登录校验逻辑,通过自己的登录逻辑进登录 ONES。
通过该能力,用户可以无需 ONES 密码,请求简单登录的专用接口,使用自己的逻辑完成登录。我们以默认的简单登录实现为示例,通过 postman 请求简单登录的专用接口,仅需提供用户的user_uuid
,无需提供账号及密码,即可成功登录。
使用
通过 OP 工具添加该能力,然后在该能力的对应方法中实现自己的登录验证逻辑即可,该方法名默认为SimpleAuthValidate
,用户可以在config/plugin.yaml
中修改方法名,相关步骤如下所示。
第一步: 通过 OP 工具添加并使用能力
在插件根目录
使用命令行输入 OP 命令添加能力(该指令需要 OP 工具版本 1.0 及以上)
npx op add ability
选中并添加simple-auth@1.0.0
OP 工具会为插件添加如下内容
-
插件配置文件
config/plugin.yaml
中 abilities 字段新增相关段落。config/plugin.yamlservice:
app_id: ...
name: simple-auth
...
apis:
...
abilities:
- id: C5CWrHte
name: Simple-login
version: 1.0.0
abilityType: SimpleAuth
function:
validateFunc: SimpleAuthValidateplugin.yaml
文件的abilities
字段中,id
的值可以自定义,name
的值可以自定义,function.validateFunc
的值可以替换成你实现能力方法的名称,当然保持默认也可以。 -
OP 工具在插件中新增文件
backend/src/simple-auth.ts
backend/src/simple-auth.ts
import type { PluginRequest, PluginResponse } from '@ones-op/node-types'
// 示例方法 SimpleAuth 简单登录能力使用
export async function SimpleAuthValidate(request: PluginRequest): Promise<PluginResponse> {
const { user_uuid } = request?.body as any
if (!user_uuid) {
return {
body: {
code: 400,
reason: '缺少参数 user_uuid',
},
}
}
//在这里可以填写你的登录验证逻辑
return {
body: {
code: 200,
data: {
uuid: user_uuid,
},
},
}
}
第二步: 实现自己的简单登录校验逻辑
当用户进行简单登录时,ONES 会调用插件中的SimpleAuthValidate
方法,在方法内进行登录逻辑的处理,开发者需要在SimpleAuthValidate
方法内完成自己的登录校验逻辑,指定自己的登录规则。
在这里,我们实现的规则为: 只允许以W
开头的user_uuid
进行简单登录。
backend/src/simple-auth.ts
import type { PluginRequest, PluginResponse } from '@ones-op/node-types'
// 示例方法 SimpleAuth 简单登录能力使用
export async function SimpleAuthValidate(request: PluginRequest): Promise<PluginResponse> {
const { user_uuid } = request?.body as any
if (!user_uuid) {
return {
body: {
code: 400,
reason: '缺少参数 user_uuid',
},
}
}
//只允许W开头的user_uuid进行免登录
if (!user_uuid.startsWith('W')) {
return {
body: {
code: 401,
reason: '该用户没有权限进行简单登录',
},
}
}
return {
body: {
code: 200,
data: {
uuid: user_uuid,
},
},
}
}