开源项目低代码表单FormCreate重写内置的请求方法,实现中间件和附带token

低代码表单FormCreate中为了确保所有的接口请求都包含认证 Token,您可以重写内置的请求方法,并在请求前动态地设置 Token。这不仅确保了请求的安全性,也使得 Token 的管理更加集中和一致。

源码地址: Github | Gitee | 帮助文档

重写内置请求方法并设置 Token

您可以自定义 formCreate.fetch 方法,以便在每次请求时自动附加 Token

js 复制代码
formCreate.fetch = (options) => {
    // 获取或生成 Token
    const token = 'your-auth-token'; // 这里的 token 可以从 Vuex、localStorage 或其他地方获取


// 设置请求头,附加 Authorization token
    const headers = {
        ...options.headers,
        Authorization: `Bearer ${token}`,
    };


// 发起请求
    fetch(options.action, {
        method: options.method || 'GET', // 默认请求方法为 GET
        headers: headers,                 // 包含 Authorization 的请求头
        body: options.method !== 'GET' ? JSON.stringify(options.data) : null, // 如果是 POST 或其他方法,添加请求体
    })
    .then(response => response.json())  // 解析响应为 JSON
    .then(data => {
        if (options.onSuccess) {
            options.onSuccess(data);  // 成功回调
        }
    })
    .catch(error => {
        if (options.onError) {
            options.onError(error);  // 失败回调
        }
    });
};

在请求前设置 Token

通过 beforeFetch 钩子,您可以在每次请求发送前设置 Token。以下是如何在 Vue 组件中使用这个钩子:

html 复制代码
<template>
    <form-create :rule="rule" v-model:api="fApi" :option="options" />
</template>

<script setup>
    import { ref } from 'vue';
    const fApi = ref({});
    const options = {
        // 在请求发送前的钩子
        beforeFetch: (options) => {
            // 动态设置请求头中的 Authorization token
            const token = 'your-auth-token'; // 这里的 token 可以从任何存储中获取
            options.headers = {
                Authorization: `Bearer ${token}`
            };
        }
    };
    const rule = [
        {
            type: 'select',
            field: 'product',
            title: '选择产品',
            fetch: {
                action: '/api/products',
                to: 'options',
                parse: (res) => res.data.map(product => ({ label: product.name, value: product.id })),
                onError: (error) => console.error('加载产品数据失败:', error),
            },
        }
    ];
</script>
相关推荐
9527出列19 小时前
Tursm中WebSocket 连接生命周期:建立、保活、断开与重连
开源
冬奇Lab19 小时前
开源项目第182期:Graphify — 把整个代码库变成可查询知识图谱,让 AI 编程助手真正「懂」你的项目
人工智能·开源·资讯
m4Rk_19 小时前
【论文阅读】Agent 记忆机制(34):MemoryBank——用遗忘曲线管理可强化的长期对话记忆
论文阅读·人工智能·学习·开源·github
初禾w-w19 小时前
阿里云开源 UModel 并发起 USS 倡议:构建企业级通用语义标准,重塑 AI 交互底座
人工智能·阿里云·开源·企业ai·对象图语义·语义割裂
奈斯先生Vector19 小时前
AI 辅助线上排障工作台:从故障证据、Codex 协作到可回放修复
人工智能·架构·开源·aigc·midjourney
Whbbit19991 天前
发布自己的 shadcn-vue 扩展组件,并支持 CLI 安装
前端·开源
TunerT_TQ1 天前
硬核横评:Kimi K3 × MiniMax H3 ——开源前沿模型的“智能”与“生成”之争
开源·#ai视频生成·#企业智能体·#agent操作系统·#kimik3·#ai agent·#minimaxh3
ERD Online1 天前
docker-compose 一键部署的 MIT 开源数据库建模平台
数据库·docker·开源
敲代码的玉米C1 天前
Agent 做 IDE
前端·人工智能·开源
孙启超1 天前
Token太贵自己写了一个mac版开源AI编程工具
人工智能·macos·开源·llm·agent·ai编程·ai应用开发