Supabase的用戶管理系統by API

更新於 發佈於 閱讀時間約 8 分鐘
在上篇文章中我們實際安裝並且使用了supabase-js連接我們的supabase資料庫,並且已經測試成功。
本篇文章就來導覽一下supabase-js的文件,還有在頁面裡面示範會員管理系統的登入和登出,以及在客戶端的操作。
嗨歡迎閱讀我的文章!這是關於Supabase的系列文章,內容包含介紹Supabase是什麼、基本功能應用,深入了解Supabase的進階功能應用。

supabase-js文件

在每個supabase專案裡面都有一份快速上手的文件,而且這份文件是自動生成出來的文件,這個意思是說只要這個專案裡面資料庫的表格有任何新增,這份文件就有對應的文件可以查詢,如果對於API有更多選項想要查詢的話可以另外在官網的地方查詢詳細文件。

快速上手文件

快速上手文件的位置就在每個supabase專案裡面,一樣進入專案後台以後,進入API Docs的頁籤。
在這裡就有寫基本supabase-js的安裝和初始化的方式,這些方式在上篇文章中都有提到所以先跳過,在下面User Management的頁面裡面就有寫所有關於會員管理系統的內容。
會員管理系統的說明文件
在Tables and Views的頁面裡面就是對應supabase的資料庫表格和欄位,裡面有寫基本的查詢表格內容該如何撰寫、插入資料與刪除資料,或是直接在查詢的時候過濾資料也有詳細介紹,有需要的時候記得來這個頁面裡面查看一下。

完整文件

這個supabase-js套件本身已經包含所有REST API,只需要按照使用情境調用符合的功能即可;除了最一開始的初始化和安裝,套件還分成4大部分,DATABASE(DB操作)、AUTH(會員管理)、REALTIME(實時更新)、STORAGE(儲存庫操作)等區塊,這些區塊都可以在文件的左方直接找到,或是直接在搜尋欄位內直接搜尋。
當然如果有需要安裝與初始化可以參考我的上篇文章。

AUTH(會員管理)實作

會員管理就是註冊登入登出等功能串接,馬上先去文件裡面查查有關的內容。
會員說明文件中有關註冊會員與登入會員的部分

註冊實作

預計在註冊的頁面裡面使用上面的signup這個函式,點擊註冊的時候把email和密碼送出。
在前端頁面中嘗試會員登入
上方圖是我的註冊畫面,在頁面裡面就使用兩個變數分別紀錄用戶輸入的email和密碼,點擊註冊按鈕的時候就把email和密碼帶入doSignUp裡面,用一個loading記錄是否正在等待,等待註冊結束以後把loading狀態取消,程式碼大概是長得像下面這樣。
const loading = ref(false)
const doSignUp = async ({ email, password }) => {
loading.value = true
const { data, error } = await supabase.auth.signUp({
email: email,
password: password
})
loading.value = false
}

登入實作

登入大概跟註冊長得90%相似,頁面如上圖所示,一樣會準備兩個變數記錄用戶輸入的email和密碼,loading變數記錄是否正在等待,點擊登入按鈕執行doLogin,程式碼大概長得跟下方一樣。
const loading = ref(false)
const doLogin = async ({ email, password }) => {
loading.value = true
const { data, error } = await supabase.auth.signInWithPassword({
email: email,
password: password
})
loading.value = false
}

session介紹

用戶成功登入或註冊成功以後,supabase-js就會自動幫我們把登入狀態session處理好了,在session有效的期間發送的request都有夾帶用來辨別身份的資訊在headers裡面,完全不用自己動手處理用戶登入狀態等問題。
當然如果要記錄用戶的識別ID可以從剛剛註冊和登入成功的返回資訊裡面找到,或是使用supabase.auth.getUser()或supabase.auth.getSession()重新取得用戶資訊。

登出實作

登出和註冊和登入一樣都有專屬的函式可以調用,這個登出就是把儲存在用戶端的session給註銷掉。
登出在我的畫面上是放在Header上面,有登入的狀態才會顯示登出兩字,點擊會執行登出。
而這段程式碼也更簡短一點,需要注意的是如果本身在APP有紀錄用戶ID和email的地方也要一起清除,大概長得像下面這樣。
const logout = async () => {
const { error } = await supabase.auth.signOut()
store.id = ''
store.email = ''
}

維持登入狀態

在用戶已登入的狀態下,用戶再度開啟APP頁面或是用戶重新整理頁面,正常前端需要把儲存的登入狀態session拿出來檢查,用來復原用戶的登入狀態,而這件事情supabase-js也已經幫我們做好了,只需要調用用戶狀態變更事件就可以接收到用戶的登入狀態session,範例程式碼如下方。
<script setup>
import { useUserStore } from './stores/user'
import supabase from './supabase'
import { onMounted } from 'vue'


const store = useUserStore()
onMounted(async () => {
supabase.auth.onAuthStateChange((_, session) => {
if (session === null) return
store.id = session.user.id
store.email = session.user.email
})
})

</script>
第一個參數是事件名稱,有多個相對應的事件可以處理,建議直接參考onauthstatechange文件,第二個參數則是重要的登入狀態session,當然如果原本用戶就沒有登入的話會是null,拿到session後就可以決定要讓用戶重回登入還是去別的地方。

總結

supabase-js的函式庫中,註冊、登入和登出都相當簡短易讀,而且把常用的功能都準備好給開發者直接調用,這樣在開發APP的時候就免於撰寫常用的登入登出邏輯,以及減少人為的疏失,讓開發者能更專注於APP全新功能上。

有興趣的內容

為什麼會看到廣告
avatar-img
6會員
23內容數
沙龍新手
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
技術叢林 的其他內容
Supabase的串接方式很多元,其中在網頁前端中使用起來最簡單也最推薦的方式就是使用官方提供的supabase-js套件,該套件已經把所有REST和REALTIME的API功能包好,可以方便的在網頁中提取使用。嗨歡迎閱讀我的文章!這是關於Supabase的系列文章,內容包含介紹Supabase是什
Supabase裡的每個專案都自帶一組開箱即用的會員系統和身份認證系統,只需要使用Supabase提供的SDK,不管是身份認證、登入、登出、會員管理,處理TOKEN等功能都包在裡面處理到好,相當實用。 嗨歡迎閱讀我的文章!這是關於Supabase的系列文章,內容包含介紹Supabase是什麼、基本功
是時候討論資料庫安全性的時候!還記得上一篇Supabase的資料庫和表格文章中,建立一個新的表格時有把一個RLS的按鈕打開,這篇文章就是簡單的說明一下RLS是什麼,以及RLS如何設定等等範例。 嗨歡迎閱讀我的文章!這是關於Supabase的系列文章,內容包含介紹Supabase是什麼、基本功能應用,
嗨歡迎閱讀我的文章!這是關於Supabase的系列文章,內容包含介紹Supabase是什麼、基本功能應用,深入了解Supabase的進階功能應用。 Supabase的資料庫基底是PostgreSQL,在PostgreSQL中又是有著各種表格,以及各種欄位所構成,接下來搭配介面介紹。如果想要對Post
嗨歡迎閱讀我的文章!這是關於Supabase的系列文章,內容包含介紹Supabase是什麼、基本功能應用,深入了解Supabase的進階功能應用。 Supabase將為前端開發帶來創新、便利和效率。 什麼是Supabase? Supabase官網 Supabase是一個開源的後端服務平台,提供完全可
Supabase的串接方式很多元,其中在網頁前端中使用起來最簡單也最推薦的方式就是使用官方提供的supabase-js套件,該套件已經把所有REST和REALTIME的API功能包好,可以方便的在網頁中提取使用。嗨歡迎閱讀我的文章!這是關於Supabase的系列文章,內容包含介紹Supabase是什
Supabase裡的每個專案都自帶一組開箱即用的會員系統和身份認證系統,只需要使用Supabase提供的SDK,不管是身份認證、登入、登出、會員管理,處理TOKEN等功能都包在裡面處理到好,相當實用。 嗨歡迎閱讀我的文章!這是關於Supabase的系列文章,內容包含介紹Supabase是什麼、基本功
是時候討論資料庫安全性的時候!還記得上一篇Supabase的資料庫和表格文章中,建立一個新的表格時有把一個RLS的按鈕打開,這篇文章就是簡單的說明一下RLS是什麼,以及RLS如何設定等等範例。 嗨歡迎閱讀我的文章!這是關於Supabase的系列文章,內容包含介紹Supabase是什麼、基本功能應用,
嗨歡迎閱讀我的文章!這是關於Supabase的系列文章,內容包含介紹Supabase是什麼、基本功能應用,深入了解Supabase的進階功能應用。 Supabase的資料庫基底是PostgreSQL,在PostgreSQL中又是有著各種表格,以及各種欄位所構成,接下來搭配介面介紹。如果想要對Post
嗨歡迎閱讀我的文章!這是關於Supabase的系列文章,內容包含介紹Supabase是什麼、基本功能應用,深入了解Supabase的進階功能應用。 Supabase將為前端開發帶來創新、便利和效率。 什麼是Supabase? Supabase官網 Supabase是一個開源的後端服務平台,提供完全可
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
簡介如何使用Solana Pay API整合商店頁面進行支付
Thumbnail
※ 什麼是Web API API 就是後端開出來讓前端來用的介面,讓前端與後端可以溝通。 API流程: 終端使用者用任何一種裝置進入瀏覽器。 瀏覽器透過 API 向後端發出請求,請求查詢或修改資料。 後端透過 API 收到前端的請求後,取得資料並回應給前端。 前端渲染畫面,終端使用者
Thumbnail
在 Vue 專案中使用 Apollo Graphql Client 從 API 獲取資料,由於資料結構較為複雜,筆者便跟著網路教學使用 codegen 工具自動化產生 TypeScript 型別定義。在某個元件中,需要使用 defineProps 來撰寫型別定義,結果⋯⋯
Thumbnail
Rush 為管理大型存儲庫的工具,適用於處理多個互相依賴的專案。本篇文章教導讀者如何全域安裝 Rush,進行專案初始化並在專案內添加相關檔案。同時也提供瞭如何將其他專案加入以及在專案中引入其他套件的方法。文章詳細介紹了 Rush 的主要功能和各種配置檔案的作用。另外,也提供了一些相關的參考資料。
Thumbnail
工作上需要使用到LDAP,但因為公司提供的Server不便,因此在本機建立LDAP伺服器和使用者是一個解決方案。本文記錄了安裝ApacheDS和Apache Directory Studio,以及建立連線、使用者和組織的步驟。
Thumbnail
登入資料庫方式,請執行以下的命令: sudo mysql -u root -p 建立一個新資料庫,我們建立“itslinuxfoss”資料庫為例: CREATE DATABASE itslinuxfoss; 為新建立的資料庫設定新的使用者名稱和密碼: GRANT ALL PRIVILEGE
※ MySQL是什麼? MySQL是一種開源(免費)的關聯式資料庫管理系統,所以任何人都可以免費使用,是Web開發中最常用的資料庫之一。MySQL 會將資料儲存在由資料列與資料欄組成的資料表中。使用者可使用結構化查詢語言 (通常稱為 SQL) 來定義、操控、控管及查詢資料。  簡單來說,資料
Thumbnail
本文探討會員系統網頁設計的技巧和策略,包括註冊和登錄流程設計、個人化的會員資料頁面、會員等級和權益設計、會員專區和互動功能、客戶支持和反饋機制等。
Thumbnail
※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為
Thumbnail
授權碼模式連線流程 用戶端請求自己的伺服器。 伺服器發現用戶沒登入,就導向認證伺服器。 認證伺服器顯示授權頁面,等待用戶授權。 用戶確認授權後,授權頁面會向認證伺服器請求授權碼。 用戶獲取授權碼。 用戶將授權碼傳給伺服器。 伺服器拿授權碼向認證伺服器取得token。 應用註冊
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
簡介如何使用Solana Pay API整合商店頁面進行支付
Thumbnail
※ 什麼是Web API API 就是後端開出來讓前端來用的介面,讓前端與後端可以溝通。 API流程: 終端使用者用任何一種裝置進入瀏覽器。 瀏覽器透過 API 向後端發出請求,請求查詢或修改資料。 後端透過 API 收到前端的請求後,取得資料並回應給前端。 前端渲染畫面,終端使用者
Thumbnail
在 Vue 專案中使用 Apollo Graphql Client 從 API 獲取資料,由於資料結構較為複雜,筆者便跟著網路教學使用 codegen 工具自動化產生 TypeScript 型別定義。在某個元件中,需要使用 defineProps 來撰寫型別定義,結果⋯⋯
Thumbnail
Rush 為管理大型存儲庫的工具,適用於處理多個互相依賴的專案。本篇文章教導讀者如何全域安裝 Rush,進行專案初始化並在專案內添加相關檔案。同時也提供瞭如何將其他專案加入以及在專案中引入其他套件的方法。文章詳細介紹了 Rush 的主要功能和各種配置檔案的作用。另外,也提供了一些相關的參考資料。
Thumbnail
工作上需要使用到LDAP,但因為公司提供的Server不便,因此在本機建立LDAP伺服器和使用者是一個解決方案。本文記錄了安裝ApacheDS和Apache Directory Studio,以及建立連線、使用者和組織的步驟。
Thumbnail
登入資料庫方式,請執行以下的命令: sudo mysql -u root -p 建立一個新資料庫,我們建立“itslinuxfoss”資料庫為例: CREATE DATABASE itslinuxfoss; 為新建立的資料庫設定新的使用者名稱和密碼: GRANT ALL PRIVILEGE
※ MySQL是什麼? MySQL是一種開源(免費)的關聯式資料庫管理系統,所以任何人都可以免費使用,是Web開發中最常用的資料庫之一。MySQL 會將資料儲存在由資料列與資料欄組成的資料表中。使用者可使用結構化查詢語言 (通常稱為 SQL) 來定義、操控、控管及查詢資料。  簡單來說,資料
Thumbnail
本文探討會員系統網頁設計的技巧和策略,包括註冊和登錄流程設計、個人化的會員資料頁面、會員等級和權益設計、會員專區和互動功能、客戶支持和反饋機制等。
Thumbnail
※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為
Thumbnail
授權碼模式連線流程 用戶端請求自己的伺服器。 伺服器發現用戶沒登入,就導向認證伺服器。 認證伺服器顯示授權頁面,等待用戶授權。 用戶確認授權後,授權頁面會向認證伺服器請求授權碼。 用戶獲取授權碼。 用戶將授權碼傳給伺服器。 伺服器拿授權碼向認證伺服器取得token。 應用註冊