使用 Prisma 和 Planetscale 在 Astro 中设置身份验证

本文介绍了如何在Astro项目中集成Prisma和Planetscale进行身份验证。作者将账户信息存储在PlanetScale中,通过更新Prisma模式并在应用程序中添加环境变量来实现。使用特定的包处理身份验证,包括登录功能和权限保护的API路由。未认证的用户将被重定向或收到403响应。
摘要由CSDN通过智能技术生成

一段时间以来,我一直想为我的个人网站添加身份验证,以了解它在 Astro 中的工作原理。由于 Prisma 和 PlanetScale 已经在我的博客上
征求意见,我决定将我的帐户信息存储在 PlanetScale 中。 因为它只是用于我自己的帐户,并且我没有在我的数据库中存储任何其他敏感信息,所以我决定暂时以纯文本形式存储凭据。 我更改了我的 Prisma 模式以使其成为可能:


 

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code>// schema.prisma

model Account {
  id Int @id @default(autoincrement())
  username String @unique
  password String
}
</code></span></span>

在代码中更新模型后,运行npx prisma db push会将更改传播到 PlanetScale,因此架构会在实际数据库中更新。

我使用一个现有的包@astro-auth来处理我网站上的所有身份验证。
为此,我需要向我的应用程序添加 2 个环境变量:(ASTROAUTH_URL托管我网站的 URL)和ASTROAUTH_SECRET(一个自选密钥)。

因为我将凭据存储在 PlanetScale 中,所以我需要使用 来CredentialProvider启用使用用户名和密码登录。
上还有许多其他提供程序可用@astro-auth,如果您有兴趣,请查看软件包。
设置它所需的代码@astro-auth如下所示:

<span style="color:var(--syntax-text-color)"><span style="color:var(--syntax-text-color)"><code><span style="color:var(--syntax-comment-color)">// /pages/api/auth/[...astroauth].ts</span>

<span style="color:var(--syntax-declaration-color)">import</span> <span style="color:var(--syntax-name-color)">AstroAuth</span> <span style="color:var(--syntax-declaration-color)">from</span> <span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">@astro-auth/core</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-text-color)">;</span>
<span style="color:var(--syntax-declaration-color)">import</span> <span style="color:var(--syntax-text-color)">{</span> <span style="color:var(--syntax-name-color)">CredentialProvider</span> <span style="color:var(--syntax-text-color)">}</span> <span style="color:var(--syntax-declaration-color)">from</span> <span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">@astro-auth/providers</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-text-color)">;</span>
<span style="color:var(--syntax-declaration-color)">import</span> <span style="color:var(--syntax-text-color)">{</span> <span style="color:var(--syntax-name-color)">prisma</span> <span style="color:var(--syntax-text-color)">}</span> <span style="color:var(--syntax-declaration-color)">from</span> <span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-string-color)">../../../lib/prisma</span><span style="color:var(--syntax-string-color)">'</span><span style="color:var(--syntax-text-color)">;</span>

<span style="color:var(--syntax-declaration-color)">export</span> <span style="color:var(--syntax-declaration-color)">const</span> <span style="color:var(--syntax-name-color)">all</span> <span style="color:var(--syntax-erro
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值