You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Electron主/渲染进程用户认证管理及应用架构设计咨询

针对你的Electron + Supabase应用设计建议

一、用户认证管理方案

核心原则:只在渲染进程处理Supabase认证逻辑,避免双进程重复登录,主进程仅负责会话持久化与状态同步

  • 渲染进程初始化唯一的Supabase客户端,所有Supabase HTTP请求(包括登录)都在这里执行,符合企业网络对HTTP请求的安全要求
  • 登录成功后,将Supabase的会话对象(session)通过IPC传递给主进程,主进程用加密存储工具(比如electron-store开启加密选项)持久化保存会话
  • 应用启动时,渲染进程先向主进程请求已存储的会话:
    • 若存在有效会话,直接用它初始化Supabase客户端,实现自动登录
    • 若不存在或会话过期,渲染进程展示登录界面引导用户操作
  • 当Supabase会话自动刷新时(SDK内置逻辑),渲染进程及时将新会话同步给主进程更新存储,确保下次启动能复用

二、进程职责划分

明确边界,避免逻辑混乱:

渲染进程职责

  • 所有用户交互:登录表单、本地数据库凭证输入UI、状态提示
  • 所有HTTP请求:Supabase认证、数据上传至目标位置
  • 接收主进程传来的本地数据库数据,完成格式转换(若需要)后发起上传请求
  • 维护Supabase客户端的生命周期,处理会话过期、刷新等逻辑

主进程职责

  • 会话持久化:加密存储渲染进程同步的Supabase会话,启动时返回给渲染进程
  • 本地数据库操作:接收渲染进程传递的凭证,建立/维护本地数据库连接,执行数据查询
  • 定时任务调度:负责每X分钟触发本地数据库数据获取的任务(避免渲染进程被隐藏/关闭时任务中断)
  • IPC通信管控:定义清晰的IPC消息协议(比如store-session、fetch-local-data、send-local-credential),处理进程间的消息传递与异常捕获
  • 系统权限相关操作:比如本地文件访问、后台运行保障

三、关键流程示例

登录流程

  1. 渲染进程请求主进程获取存储的会话
  2. 无有效会话 → 渲染进程展示登录页,用户输入凭证
  3. 渲染进程调用Supabase signInWithPassword完成登录
  4. 登录成功 → 渲染进程通过IPC发送store-session消息,携带会话对象
  5. 主进程加密存储会话,返回确认消息给渲染进程
  6. 渲染进程进入主界面,展示本地数据库凭证输入表单

本地数据同步流程

  1. 用户在渲染进程输入本地数据库凭证,通过IPC发送send-local-credential消息给主进程
  2. 主进程验证凭证,建立本地数据库连接(失败则返回错误提示给渲染进程)
  3. 主进程启动定时任务(每X分钟执行一次)
  4. 定时任务触发 → 主进程查询本地数据库,获取数据后通过IPC发送local-data-ready消息给渲染进程
  5. 渲染进程收到数据后,用已认证的Supabase客户端将数据上传至目标位置

四、其他实用见解

  • 会话安全:主进程存储会话时必须加密,避免明文存储敏感信息;渲染进程不要在本地存储会话,完全依赖主进程的持久化
  • 错误处理:IPC通信时要捕获异常,比如本地数据库连接失败、Supabase上传超时,及时将错误信息反馈到渲染进程的UI提示用户
  • 定时任务优化:使用node-schedule替代原生setInterval,支持更灵活的调度规则,同时要定期检查本地数据库连接状态,避免无效查询
  • 权限隔离:渲染进程禁止直接访问本地文件系统,所有本地数据库操作通过主进程代理,降低XSS攻击风险
  • Supabase SDK复用:渲染进程全局维护一个Supabase客户端实例,避免重复初始化,减少资源消耗

内容的提问来源于stack exchange,提问作者pida

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 07:07:44