当前位置: 首页 > news >正文

Hasura Backend Plus环境变量配置指南:从基础到高级的完整清单

Hasura Backend Plus环境变量配置指南:从基础到高级的完整清单

【免费下载链接】hasura-backend-plus🔑Auth and 📦Storage for Hasura. The quickest way to get Auth and Storage working for your next app based on Hasura.项目地址: https://gitcode.com/gh_mirrors/ha/hasura-backend-plus

Hasura Backend Plus是为Hasura提供身份验证和存储功能的快速解决方案,通过环境变量配置可以灵活定制其行为。本文将详细介绍从基础到高级的环境变量设置方法,帮助新手和普通用户轻松完成配置。

快速开始:基础环境变量设置

核心配置项

Hasura Backend Plus的基础运行依赖以下核心环境变量,建议在部署前优先配置:

  • PORT:服务器端口,默认值为Express.js的默认端口
  • HOST:服务器主机地址,详细配置可参考Express文档
  • HASURA_ENDPOINT:Hasura GraphQL端点地址,必填项
  • HASURA_GRAPHQL_ADMIN_SECRET:Hasura管理员密钥,用于执行管理员操作
  • SERVER_URL:Hasura Backend Plus运行的服务器URL,用于生成邮件模板链接和OAuth回调地址

基础配置示例

PORT=3000 HOST=0.0.0.0 HASURA_ENDPOINT=http://hasura:8080/v1/graphql HASURA_GRAPHQL_ADMIN_SECRET=your-admin-secret SERVER_URL=https://your-domain.com

身份验证配置:保护你的应用

用户认证基础设置

身份验证模块的核心环境变量控制用户注册、登录和权限管理:

  • AUTH_ENABLED:是否启用所有身份验证路由,默认值true
  • AUTH_LOCAL_USERS_ENABLED:是否允许使用邮箱密码或魔法链接注册登录,默认值true
  • VERIFY_EMAILS:是否要求用户验证邮箱,默认值false
  • AUTO_ACTIVATE_NEW_USERS:新用户是否自动激活,默认值true。设为false时需通过邮件验证激活

密码安全设置

增强账户安全性的关键配置:

  • MIN_PASSWORD_LENGTH:密码最小长度,默认值3,建议生产环境设置为8以上
  • HIBP_ENABLED:是否检查密码是否在Pwned Passwords数据库中,默认值false
  • LOST_PASSWORD_ENABLED:是否启用密码找回功能,默认值false

角色与权限控制

  • DEFAULT_USER_ROLE:注册用户的默认角色,默认值user
  • DEFAULT_ANONYMOUS_ROLE:匿名用户的默认角色,默认值anonymous
  • ALLOWED_EMAIL_DOMAINS:限制注册邮箱域名,默认允许所有域名。示例:tesla.com,ikea.se

JWT配置:安全的身份验证令牌

JWT设置控制身份验证令牌的生成和验证:

  • JWT_KEY:JWT签名密钥,建议使用长随机字符串。示例:some-long-random-string-uh8ga7sgd8asgd7asgd89asijduyvtasfd789ujioasdubvtf76a8ys9udiojuauvytdf768aud
  • JWT_ALGORITHM:加密算法,可选RS256HS256等,推荐HS512
  • JWT_EXPIRES_IN:访问令牌过期时间(分钟),默认值15
  • JWT_REFRESH_EXPIRES_IN:刷新令牌过期时间(分钟),默认值43200(30天)
  • JWT_CLAIMS_NAMESPACE:Hasura声明命名空间,默认值https://hasura.io/jwt/claims

自定义JWT字段

通过JWT_CUSTOM_FIELDS可以将用户表中的自定义字段添加到JWT令牌中:

JWT_CUSTOM_FIELDS=company_id,department

配置后,JWT将包含这些自定义字段作为Hasura会话变量,如x-hasura-company-id

存储配置:管理文件上传

存储模块配置控制文件上传和S3集成:

  • STORAGE_ENABLED:是否启用存储功能,默认值true
  • S3_BUCKET:S3存储桶名称,必填项
  • S3_ACCESS_KEY_ID:S3访问密钥ID
  • S3_SECRET_ACCESS_KEY:S3密钥
  • S3_ENDPOINT:S3服务端点,适用于兼容S3的存储服务
  • S3_SSL_ENABLED:是否启用SSL连接,默认值true

邮件配置:启用事务性邮件

要启用账户激活、密码重置等邮件功能,需配置SMTP参数:

  • EMAILS_ENABLED:是否启用邮件功能,默认值false
  • SMTP_HOST:SMTP服务器主机名
  • SMTP_PORT:SMTP端口,默认值587
  • SMTP_USER:SMTP用户名
  • SMTP_PASS:SMTP密码
  • SMTP_SENDER:发件人邮箱地址
  • SMTP_AUTH_METHOD:认证方式,默认值PLAIN
  • SMTP_SECURE:是否使用安全连接,默认值true

OAuth集成:第三方登录配置

Hasura Backend Plus支持多种OAuth提供商,以Google为例:

  • GOOGLE_ENABLED:是否启用Google登录,默认值false
  • GOOGLE_CLIENT_ID:Google应用客户端ID
  • GOOGLE_CLIENT_SECRET:Google应用客户端密钥

类似配置适用于GitHub、Facebook、Twitter、LinkedIn等其他提供商,只需将前缀替换为对应提供商名称(如GITHUB_FACEBOOK_)。

高级配置:安全与性能优化

安全增强

  • COOKIE_SECRET:用于加密Cookie的密钥
  • COOKIE_SECURE:是否仅通过HTTPS发送Cookie
  • COOKIE_SAME_SITE:Cookie SameSite策略,可选laxstrictnone,默认值lax
  • MFA_ENABLED:是否启用多因素认证,默认值false
  • OTP_ISSUER:OTP发行者名称,默认值HBP

速率限制

  • MAX_REQUESTS:时间窗口内的最大请求数,默认值1000
  • TIME_FRAME:时间窗口(毫秒),默认值900000(15分钟)

配置文件管理

推荐使用.env文件管理环境变量,项目中可参考以下文件结构组织配置:

  • 开发环境:docker/dev/.env
  • 生产环境:docker/prod/.env

配置变更后需重启服务使设置生效。完整的环境变量列表可参考官方文档docs/docs/environment-variables.md。

常见问题解决

配置不生效

  1. 确保环境变量名称拼写正确(区分大小写)
  2. 检查是否使用了正确的文件路径
  3. 确认服务已重启以应用新配置

邮件发送失败

  • 验证SMTP服务器信息是否正确
  • 检查防火墙设置是否阻止了SMTP连接
  • 尝试禁用SMTP_SECURE(设为false)测试连接

权限问题

  • 检查JWT配置是否正确包含所需的角色信息
  • 确认HASURA_GRAPHQL_ADMIN_SECRET是否正确设置
  • 验证ALLOWED_USER_ROLES是否包含所需角色

通过合理配置这些环境变量,你可以充分发挥Hasura Backend Plus的功能,构建安全、高效的应用后端。如需进一步定制,可参考项目中的配置文件src/shared/config/获取更多细节。

【免费下载链接】hasura-backend-plus🔑Auth and 📦Storage for Hasura. The quickest way to get Auth and Storage working for your next app based on Hasura.项目地址: https://gitcode.com/gh_mirrors/ha/hasura-backend-plus

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/483844/

相关文章:

  • 终极指南:如何使用TW-Elements构建坚不可摧的前端应用
  • sora-editor主题定制教程:打造个性化的移动代码编辑环境
  • java毕业设计下载(全套源码+配套论文)——基于java+SSH+jsp的物资租赁系统设计与实现
  • Waves智能合约开发终极教程:RIDE语言入门到精通
  • java毕业设计下载(全套源码+配套论文)——基于java+SSH+jsp的酒水销售系统设计与实现
  • Blockly 离线数据同步终极指南:IndexedDB 与云端数据合并策略
  • TTLCache vs 传统缓存:为什么泛型+自动过期是Go应用的最佳选择?
  • 解决Meta Llama模型转换中的符号链接错误:3种方案让模型部署提速90%
  • 【任何一个自然数m的立方均可写成m个连续奇数之和】2024-10-17
  • Cert-Manager CSI驱动集成终极指南:容器内证书挂载的完整解决方案
  • nvim-treesitter终极性能优化指南:内存占用直降50%的7个技巧
  • 如何使用Olake快速构建实时数据湖:从安装到数据同步的完整指南
  • Tone.js版本迁移终极指南:从v4到v5的破坏性变更处理
  • Seafile API批量操作终极指南:高效管理海量文件数据的完整方案
  • Olake未来路线图:即将发布的5大功能让数据复制更简单
  • 如何快速集成Vue.js与React到Yii 2框架:完整指南
  • AnimateDiff终极指南:10个技巧快速创作AI辅助动画作品
  • Android-PickerView 终极指南:实现选择器数据的云端同步与备份恢复
  • 如何快速构建Web音频应用:Tone.js与后端服务集成的完整指南
  • SAP S/4HANA Cloud Private Edition 的发布周期
  • 终极指南:如何使用Conductor微服务编排平台解决跨服务工作流难题
  • 如何快速实现React Native聊天机器人智能回复功能:完整指南
  • 从0到1:用num库构建Rust高精度计算器应用
  • DIY-Thermocam实战案例:用自制热成像仪检测电器故障的完整步骤
  • nvim-treesitter终极版本控制指南:如何确保解析器完美更新
  • WebLaF完全指南:打造跨平台Java Swing应用的终极界面解决方案
  • 如何用React Hooks与Context模式构建Conductor前端状态管理系统
  • 终极指南:深度学习公式推导可视化,让数学不再难懂!
  • 终极指南:如何实现 nvim-treesitter 多窗口语法状态同步
  • YAPF性能优化终极指南:让大型Python项目格式化速度提升300%