Supabase的用戶管理系統by API

更新於 2023/12/11閱讀時間約 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
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
本篇文章譯自興登堡研究於2023年3月23日發表的報告,由於報告篇幅相當長,將分幾個部分分別發表,本篇提及 Block 在財務報表上如何窗飾其實不好的財務數據,並在整份報告的最後下結論,下稱的「我們」皆指興登堡研究,不代表黑鳶研究。
Thumbnail
本篇文章譯自興登堡研究於2023年3月23日發表的報告,由於報告篇幅相當長,將分幾個部分分別發表,本篇提及了Cash App各種法遵上的漏洞,並如何透過這些漏洞虛增指標增長,下稱的「我們」皆指興登堡研究,不代表黑鳶研究。
Thumbnail
本篇文章譯自興登堡研究於2023年3月23日發表的報告,由於報告篇幅相當長,將分幾個部分分別發表,本篇提及了Cash App審查機制多麼鬆散,導致許多投資人關注的指標被過度虛胖,興登堡研究甚至自己去實驗,成功取得名為川普的Cash Card,下稱的「我們」皆指興登堡研究,不代表黑鳶研究。
Thumbnail
本篇文章譯自興登堡研究於2023年3月23日發表的報告,由於報告篇幅相當長,將分幾個部分分別發表,本篇提及了Cash App多麼受到罪犯歡迎,下稱的「我們」皆指興登堡研究,不代表黑鳶研究。
您的特權使用期限已過期 走好
Thumbnail
本篇文章譯自興登堡研究於2023年3月23日發表的報告,由於報告篇幅相當長,將分幾個部分分別發表,本篇提及了Block公司的歷史以及他為何被看好,同時也給出興登堡對於Block基本面的總結,下稱的「我們」皆指興登堡研究,不代表黑鳶研究。
Thumbnail
本篇文章譯自興登堡研究於2023年3月23日發表的報告,由於報告篇幅相當長,將分幾個部分分別發表,本篇為整篇報告的條列式摘要,下稱的「我們」皆指興登堡研究,不代表黑鳶研究。
曾經有一位學員詢問我如何在易用性測試的時候篩選適合的受測者,我們約了一個簡單的線上會議作討論,一開始他就打開文件列舉了一個二維的象限,想要討論 X 軸跟 Y 軸交叉所切出來的四種族群,何者適合作為受測者。​
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
本篇文章譯自興登堡研究於2023年3月23日發表的報告,由於報告篇幅相當長,將分幾個部分分別發表,本篇提及 Block 在財務報表上如何窗飾其實不好的財務數據,並在整份報告的最後下結論,下稱的「我們」皆指興登堡研究,不代表黑鳶研究。
Thumbnail
本篇文章譯自興登堡研究於2023年3月23日發表的報告,由於報告篇幅相當長,將分幾個部分分別發表,本篇提及了Cash App各種法遵上的漏洞,並如何透過這些漏洞虛增指標增長,下稱的「我們」皆指興登堡研究,不代表黑鳶研究。
Thumbnail
本篇文章譯自興登堡研究於2023年3月23日發表的報告,由於報告篇幅相當長,將分幾個部分分別發表,本篇提及了Cash App審查機制多麼鬆散,導致許多投資人關注的指標被過度虛胖,興登堡研究甚至自己去實驗,成功取得名為川普的Cash Card,下稱的「我們」皆指興登堡研究,不代表黑鳶研究。
Thumbnail
本篇文章譯自興登堡研究於2023年3月23日發表的報告,由於報告篇幅相當長,將分幾個部分分別發表,本篇提及了Cash App多麼受到罪犯歡迎,下稱的「我們」皆指興登堡研究,不代表黑鳶研究。
您的特權使用期限已過期 走好
Thumbnail
本篇文章譯自興登堡研究於2023年3月23日發表的報告,由於報告篇幅相當長,將分幾個部分分別發表,本篇提及了Block公司的歷史以及他為何被看好,同時也給出興登堡對於Block基本面的總結,下稱的「我們」皆指興登堡研究,不代表黑鳶研究。
Thumbnail
本篇文章譯自興登堡研究於2023年3月23日發表的報告,由於報告篇幅相當長,將分幾個部分分別發表,本篇為整篇報告的條列式摘要,下稱的「我們」皆指興登堡研究,不代表黑鳶研究。
曾經有一位學員詢問我如何在易用性測試的時候篩選適合的受測者,我們約了一個簡單的線上會議作討論,一開始他就打開文件列舉了一個二維的象限,想要討論 X 軸跟 Y 軸交叉所切出來的四種族群,何者適合作為受測者。​