nextjs-email-authentication

#使用NextAuth的Next.js電子郵件身份驗證 在Next.js中管理身份驗證可以有很多不同的方法。 在我的網站上,我選擇使用基於電子郵件的身份驗證和JWT令牌,通過NextAuth.js來實現,下面是我是如何做到的。 首先,你需要一個外部數據庫。你可以使用本地數據庫或者雲端數據庫。我選擇了PostgreSQL,但你可以使用任何你想要的數據庫。 假設你已經建立了一個Next.js網站。 執行npm install next-auth pg安裝NextAuth和PostgreSQL庫。 然後在你的.env文件中添加以下內容: DATABASE_URL=<輸入postgresql://數據庫的URL> EMAIL_SERVER=smtp://user:[[email protected]](/cdn-cgi/l/email-protection):465 EMAIL_FROM=你的名字 <[[email protected]](/cdn-cgi/l/email-protection)> NEXTAUTH_URL=http://localhost:3000 SECRET=密鑰 確保你添加了一個密鑰。你可以使用https://generate-secret.vercel.app/32生成。 我使用https://mailtrap.io來測試郵件,這在你設置好一切時非常方便。 創建一個具有以下內容的pages/api/auth/[...nextauth].js文件: import NextAuth from 'next-auth' import Providers from 'next-auth/providers' export default NextAuth({ providers: [ Providers.Email({ server: process.env.EMAIL_SERVER, from: process.env.EMAIL_FROM, }), ], database: process.env.DATABASE_URL, secret: process.env.SECRET, session: { jwt: true, maxAge: 30 * 24 * 60 * 60, // 30 days }, jwt: { secret: 'INp8IvdIyeMcoGAgFGoA61DdBglwwSqnXJZkgz8PSnX', //在這裡使用一個隨機密鑰令牌 encryption: true, }, debug: true, }) 現在根據你的數據存取層進行配置。如果你使用Prisma ORM,可以使用以下命令安裝@next-auth/prisma-adapter:...

PostgreSQL vs. MySQL,一個比較

一個關於PostgreSQL和MySQL的快速比較。 在這篇文章中,我希望對PostgreSQL和MySQL進行高層次的比較。 PostgreSQL的一個主要賣點是其授權。 PostgreSQL是開源的,擁有GPL許可證,由PostgreSQL全球開發團隊社區擁有。 如今MySQL由Oracle擁有,並且有2種不同的許可證。其中一個是開源許可證,另一個是商業許可證。這並不意味著如果您想將MySQL用於商業項目,您就需要支付費用。商業許可證提供有償支持和由Oracle建立的附加軟體,這是與MySQL的深度整合。 還有一個完全開源的MySQL分支,叫做MariaDB,它在使用和品牌方面要遜於MySQL,但如果您更喜歡MySQL,並且擔心授權問題,那麼MariaDB是一個很好的替代品。 讓我們來談談功能。 大致上,MySQL和PostgreSQL的功能集是相等的。其中一個可能會做到另一個無法做到的事情,但我們談論的是非常高級的功能,這裡我不深入介紹。 兩者都是非常先進的資料庫管理系統,有著悠久的歷史。 兩者都支援SQL標準(雖然不完全),並在此基礎上添加了一些功能。兩者都遵守ACID(Atomicity,Consistency,Isolation,Durability)準則。 兩者都可以輕鬆地創建複製,兩者都非常安全,兩者都有廣泛的社區,可以解決您可能遇到的任何問題。 兩者都擁有大量的工具支持。 那麼該選擇哪一個呢?很難說。 除非您需要一個在其中一個資料庫中已實現的特定功能,而在另一個中未實現,否則我建議您選擇您已經熟悉的那個。 例如,如果您熟悉MySQL,並且使用過WordPress,那麼您可以繼續使用它(或者MariaDB)。 可能還取決於您希望在哪個平台上部署您的軟體。例如Heroku提供了內置的管理型PostgreSQL雲資料庫服務,這可能比自己管理資料庫伺服器更方便。

PostgreSQL 使用者權限

在這篇教學中,我將解釋如何在 PostgreSQL 中管理使用者和權限。 在 PostgreSQL 中,一切都是圍繞著「角色(role)」的概念建立的。 在 macOS 安裝 PostgreSQL 時,安裝腳本會根據你的 macOS 使用者名稱建立一個角色,並且賦予一組權限。 在 PostgreSQL 中沒有使用者,只有角色。 透過在終端機中執行 psql postgres 命令,你會使用你的 macOS 使用者名稱自動登入 PostgreSQL,從而訪問被建立的角色。 在我的情況下,一個名為 flaviocopes 的角色已被建立,你可以使用 \du 命令來查看: 看到了嗎?我預設擁有以下的角色屬性: Superuser Create role Create DB Replication Bypass RLS 而且,我不屬於任何其他角色(稍後會講到這個)。 建立新角色 可以使用 CREATE ROLE 命令來創建新的角色: CREATE ROLE <role>; 例如: CREATE ROLE testing; 我們創建了一個新的角色,預設帶有 Cannot login 角色屬性。我們新建的使用者將無法登入。 你可以嘗試輸入 \q 命令退出,然後使用 psql postgres -U testing 命令,但你會看到以下錯誤: 為了解決此問題,我們需要在創建時加上 LOGIN 角色屬性: CREATE ROLE <role> WITH LOGIN; 如果我們刪除該角色:...

PostgreSQL介紹

對PostgreSQL數據庫進行高層次的概述 PostgreSQL(也被稱為PostgreSQL)是最受歡迎的SQL數據庫管理系統(DBMS)之一。 它是開源的,個人和商業使用都是免費的,並且它有著悠久的歷史,起源於1996年,建立在其他可追溯到1980年代的軟件之上。 PostgreSQL是一個非常完整和功能豐富的通用關聯數據庫。 它支持大部分的SQL標準,並且在此基礎上建立了一套獨特的功能,為我們提供了一個很好的工具。 您可以在專案主頁找到更多信息:https://www.postgresql.org。 我們可以使用多種不同的編程語言與PostgreSQL數據庫進行交互。在內部,作為一個關聯數據庫,我們將使用SQL插入、查詢和操作數據。 更多的PostgreSQL教程: 如何安裝PostgreSQL PostgreSQL用戶權限 如何列出PostgreSQL中的所有用戶 如何使用PostgreSQL列出所有數據庫 如何使用PostgreSQL切換數據庫 如何創建PostgreSQL數據庫 我將在不久的將來撰寫很多關於PostgreSQL的教程。我會在這裡鏈接它們。

修復 `psql: error: could not connect to server` 錯誤

我遇到了這個問題:以前我使用 Homebrew 安裝了 PostgreSQL,然後我無意間使用 brew upgrade 更新了它的版本,結果無法再次啟動。 之前它可以正常運作,但現在每次試圖連接時,都會出現以下錯誤: psql: error: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"? 我確認服務器正在運行,因為 ps aux | grep postgres 顯示了其進程。 我嘗試了多種解決方法,直到最後重新安裝才解決問題。 我運行了以下命令: brew uninstall postgresql brew install postgresql brew services start postgresql 然後我可以再次連接到數據庫了。

如何使用 Supabase 作為你的 PostgreSQL 托管

最近我發現你可以將 Supabase 作為你的 PostgreSQL 托管。 Supabase 是一個非常有趣的項目。它不僅僅是一個「數據庫托管」,同時也是一個可以用來進行應用程序開發的平台。它是建立在 PostgreSQL 之上的,並且提供了一個免費的 連接池,可以幫助我們避免在使用 Prisma 時耗盡數據庫連接限制的問題。 他們在免費帳戶中允許最多兩個專案,所以值得一試。 你也可以開展一個新的項目,然後在完成後刪除舊的項目。 Supabase 將自己定位為 Firebase 的替代品,除了數據庫外,還提供了身份驗證、訂閱等功能,你可以稍後再進一步探索。 注意:Supabase 也可以自托管,這樣你的兩個項目限制就會消失,但同時你需要自行管理基礎架構。 設置時,首先在 supabase.com 上使用 GitHub 登錄。 然後創建一個新的項目 然後進入“Settings”→“Database”,滾動到底部,你會找到直接連接到數據庫的連接字符串(點擊 URI) 這就是你需要將其放入 .env 文件中的 DATABASE_URL 變量。 請輸入在創建 Supabase 項目時為該項目設置的密碼。 如果你現在使用 Prisma,你可以運行 npx prisma migrate dev 從 Prisma schema 創建表。 這樣就可以連接到數據庫了,但由於 Supabase 提供了連接池,可以幫助我們免於耗盡對數據庫的連接。為什麼不使用它呢? 如果你使用 Prisma:在使用 npx prisma migrate dev 時連接池無法正常工作,對於該命令,你必須使用上面所示的直接數據庫連接字符串。所以請記住在需要時更換 DATABASE_URL 的值。 下面是連接池連接字符串: 將它複製到你的 .env 文件中,並在末尾添加 ?pgbouncer=true 如此處所述。

如何使用Sequelize與PostgreSQL進行互動

在使用資料庫時,您可以選擇使用資料庫提供的基本功能,或使用一個建立在其之上並為您抽象出細節的函式庫。 Sequelize就是其中之一,它是一個非常受歡迎的Node.js封裝器,可用於PostgreSQL、MySQL和其他資料庫。 在本文中,我將探討如何使用Sequelize來處理PostgreSQL資料庫。 安裝並設定Sequelize 在內部,Sequelize使用pg函式庫與PostgreSQL建立連接,所以當我們安裝sequelize npm套件時,我們還需要安裝pg: npm install pg sequelize 提示:如果你的專案是全新的且沒有package.json文件,請不要忘記首先執行npm init -y。 在您的Node.js文件中,您首先定義資料庫存取變數: const user = '<postgres用戶名>' const host = 'localhost' const database = '<postgres資料庫名>' const password = '<postgres密碼>' const port = '<postgres埠號>' 然後從sequelize進行三個物件的導入: import { Sequelize, Model, DataTypes } from 'sequelize' 然後,您可以使用以下語法初始化一個新的Sequelize物件實例: const sequelize = new Sequelize(database, user, password, { host, port, dialect: 'postgres', logging: false }) 我們告訴Sequelize這是什麼類型的資料庫,可以在dialect屬性中指定(如前所述,它可以處理不只是Postgres)。 我們還禁用了日誌記錄,因為它會記錄所有SQL查詢,這可能會很冗長,且我們實際上並不需要查看它們(除非您正在調試問題)。 如何創建一個Sequelize模型 對於要使用Sequelize操作的每個資料表,您都需要創建一個模型。 以下是一個示例,假設我們有一個具有“name”和“age”兩列的dogs資料表。 我們創建一個Dog類,並將其擴展Model基類: import { Sequelize, Model, DataTypes } from 'sequelize' const class Dog extends Model {} 然後在類上調用init()靜態方法,描述資料和我們要應用的規則。在此示例中,我們禁用了null:...

如何列出所有使用者的 PostgreSQL

在 PostgreSQL 資料庫中取得所有使用者的清單及其權限的方法。 從 psql 介面中,執行 \du 指令: 這將會給出系統中所有使用者的清單,以及他們的角色屬性和所屬的角色群組清單。

如何創建 PostgreSQL 資料庫

當你安裝了 PostgreSQL 之後,你可以通過開啟控制台來創建一個新的資料庫: psql postgres 然後執行 CREATE DATABASE 命令: CREATE DATABASE 資料庫名稱; 不要忘記結尾的分號 ; 執行 \l 命令,你將可以看到創建的新資料庫。

如何在 macOS 上安裝 PostgreSQL

安裝 PostgreSQL 資料庫管理系統的步驟指南 下面的指示是基於 macOS 安裝 PostgreSQL 的方式。 對於 Windows 和 Linux 使用者,請前往 https://www.postgresql.org/download/ 選擇適合的套件。 如果你使用其他平台,請搜尋「如何在 Windows 安裝 PostgreSQL」或「如何在 你的 Linux 發行版 安裝 PostgreSQL」。這些步驟不會有太大差異,尤其是在安裝階段之後。 在 macOS 上,我們會使用 Homebrew。如果你尚未安裝 Homebrew,請前往 https://brew.sh/ 並按照指示進行安裝。 完成後,返回終端機並執行以下命令: brew install postgresql 當安裝完成後,執行以下命令: brew services start postgresql 這將把 PostgreSQL 開啟作為背景服務聆聽連線。 使用 Homebrew 的好處是可以使用以下命令進行更新 brew upgrade postgresql brew postgresql-upgrade-database brew services restart postgresql postgresql 是 PostgreSQL 較難發音的名稱,但其實它們是同一個東西,只是在名稱中嵌入了 SQL。SQL 是什麼?SQL(發音為“sequel”)是結構化查詢語言(Structured Query Language)的簡稱,它是一種我們用於與關聯式資料庫進行互動的特殊語言。 如果你對資料庫是新手,這些術語可能讓你有點困惑!基本上,關聯式資料庫將資料組織到資料表中,並提供一種從這些資料表中插入和提取資料的方法。這就是 SQL。 驗證完 PostgresSQL 的登入設定後 返回終端機,輸入: psql postgres 這將給你進入 postgres 資料庫的權限,預設該資料庫與你的 macOS 使用者名稱相同。Homebrew 在安裝時會自動建立你的使用者。...