brainax

数据库和账号登录

“Vibe coding”课程第 15 课,共 26 课。免费,有动画和小测验。

就是一张更聪明的表

数据库就是给应用存数据的有序仓库,长得像一张 Excel 表。一行是一条记录,比如一个用户。一列是一个字段,也就是记录的一个属性。图里的列是 id(这一行的唯一编号)、email 和 streak(连续打卡天数)。本课的例子:你给班里做一个学习打卡工具,每个同学占一行。

为什么不存在浏览器里

AI 一开始常把数据存进 localStorage:浏览器里的一个小仓库,只在这一台设备上。做草稿没问题。但你用手机打开,电脑上的打卡记录不见了;朋友也看不到你的记录;清一下浏览器,全没了。所以共享的数据要放在数据库里,就是图的右边。前端发请求,服务器检查后再写入。

现成的后端

服务器和数据库不用从零写。有现成的后端:别人已经帮你搭好的服务器部分。Supabase:Postgres 数据库(很流行的开源数据库)、账号登录和文件存储。Firebase:Google 的类似套件。Cloudflare D1:给 Cloudflare 项目用的简单数据库。很多都有免费套餐,具体额度看服务官网。

登录:别自己造

Auth(身份验证)就是注册和登录,用来确认屏幕对面是谁。陷阱:让 AI “做个登录”,结果得到一张自制的密码表。安全地保存密码很难,一旦泄露所有人都遭殃。用服务商自带的登录:Supabase 或 Firebase 会安全地保存密码,还支持邮件链接登录和 Google 登录。图中登录表单连着数据表:每一行都属于一个账号。

RLS:各看各的

访问规则决定谁能读、能改哪些行。在 Supabase 里这叫 RLS(Row Level Security,行级安全)。Supabase 的公开密钥本来就放在前端,这是设计如此。但如果没开 RLS,任何拿到这个密钥的人都能下载整张表:全班同学的邮箱。加上图中锁上写的规则“每人只能看到自己的行”,别人的数据就关上了。能绕过规则的秘密密钥只能放在服务器上。

自测一下

  1. 为什么打卡数据要放数据库,而不是 localStorage?
    正确答案: 数据库在所有设备和用户之间共享. localStorage 只在一台设备的一个浏览器里。服务器上的数据库任何设备都能访问,有权限的人都能用。
  2. 给自己的应用加登录,最好怎么做?
    正确答案: 用服务商现成的登录,比如 Supabase. 安全保存密码很难。服务商替你做好,还支持邮箱和 Google 登录。
  3. Supabase 公开密钥在前端,RLS 却没开。会怎样?
    正确答案: 任何人都能下载整张表. 公开密钥谁都能看到,这很正常。真正保护数据的是 RLS 规则,没有它,表对所有人敞开。

← 域名与 DNS API:接入别人的服务 →