mcpField
E
encore-go-secret

encore-go-secret

github.com/encoredev安全30321 次安装2 天前更新
代码仓库

关于 encore-go-secret

为 Encore Go 项目说明如何声明和使用加密、按环境管理的密钥,适合需要在应用中读取 API 密钥或 Webhook 密钥的开发者。还介绍环境设置与本地覆盖方式。

主要功能

  1. 01以结构体字段声明密钥
  2. 02按环境设置密钥值
  3. 03通过本地文件覆盖密钥
  4. 04使用密钥验证 Webhook 签名

适用场景

  1. 01为不同部署环境配置 API 密钥
  2. 02在本地开发中提供密钥覆盖值
  3. 03验证 Webhook 请求签名

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/encoredev/skills --skill encore-go-secret

安装后在 Claude Code 中输入/encore-go-secret确认已加载。

详细介绍

Encore Go 密钥

说明

密钥是由 Encore 管理的加密环境级值。将它们声明为包级 secrets 结构体,Encore 会读取字段名称,并在运行时为每个字段解析相应的值。

package email

var secrets struct {
    SendGridAPIKey string
    SMTPPassword   string
}

func sendEmail() error {
    apiKey := secrets.SendGridAPIKey
    // Use the secret...
    return nil
}

密钥名称在整个应用中全局唯一——无论哪个包声明了 SendGridAPIKey,它解析到的值都相同。

设置值

# Set per environment type
encore secret set --type prod SendGridAPIKey
encore secret set --type dev  SendGridAPIKey
encore secret set --type local SendGridAPIKey

环境类型:production(别名 prod)、development(别名 dev)、preview(别名 pr)、local。

本地覆盖

如需在本地开发时不通过 encore secret set 设置密钥,请在仓库根目录创建 .secrets.local.cue 文件(并将其加入 gitignore):

SendGridAPIKey: "SG.local-test-key"
GitHubAPIToken: "ghp_local_..."

常见用法模式

package github

import (
    "context"
    "net/http"
)

var secrets struct {
    GitHubAPIToken string
}

func callGitHub(ctx context.Context) error {
    req, _ := http.NewRequestWithContext(ctx, "GET", "https://api.github.com/user", nil)
    req.Header.Set("Authorization", "token "+secrets.GitHubAPIToken)
    resp, err := http.DefaultClient.Do(req)
    if err != nil {
        return err
    }
    defer resp.Body.Close()
    return nil
}
package webhooks

var secrets struct {
    StripeWebhookSecret string
}
// Verify Stripe signature using secrets.StripeWebhookSecret in a raw endpoint.

指南

  • 将密钥声明为包级 secrets 结构体,而不是单独调用 secret(...)。
  • 字段名称必须与通过 encore secret set 设置的密钥名称完全一致。
  • 使用 encore secret set --type <env> 为不同环境设置不同的值。
  • 切勿提交密钥值;请使用 .secrets.local.cue 进行本地覆盖,并将其加入 gitignore。
  • 关于 Webhook 签名密钥的具体说明,另请参阅 encore-go-webhook 技能。

评论

支持 Markdown