返回

Supabase权限模型剖析:从PostgREST到gotrue

前端

前言

在上一篇博文中,我们对Supabase的权限模型进行了概述,并介绍了其核心组件PostgREST和PostgreSQL RLS。在这一篇博文中,我们将进一步深入探讨Supabase的权限模型,并结合gotrue组件详细讲解其在进行用户登录认证及权限管控方面的工作机制。

Supabase权限模型详解

Supabase的权限模型主要由PostgREST、PostgreSQL RLS和gotrue这三个核心组件组成。PostgREST是一个RESTful API服务器,它可以将PostgreSQL数据库暴露为RESTful API。PostgreSQL RLS是一个PostgreSQL扩展,它可以实现基于行的访问控制。gotrue是一个用户认证和授权服务,它可以帮助开发者轻松地在应用程序中实现用户登录和权限管理。

PostgREST

PostgREST是一个开源的RESTful API服务器,它可以将PostgreSQL数据库暴露为RESTful API。PostgREST使用一种称为JSON API的规范来定义其API。JSON API是一种用于定义和使用RESTful API的规范,它具有易于理解和使用、支持多种数据类型、支持过滤、排序和分页等优点。

PostgreSQL RLS

PostgreSQL RLS是一个PostgreSQL扩展,它可以实现基于行的访问控制。RLS允许数据库管理员对表中的数据行设置访问控制规则,以便只有满足这些规则的用户才能访问这些数据行。RLS支持多种类型的访问控制规则,包括基于用户、基于组、基于角色和基于行的访问控制规则。

gotrue

gotrue是一个开源的用户认证和授权服务,它可以帮助开发者轻松地在应用程序中实现用户登录和权限管理。gotrue支持多种身份验证方式,包括电子邮件和密码、社交媒体登录和第三方登录。gotrue还支持多种授权方式,包括基于角色的授权和基于权限的授权。

Supabase权限模型的工作机制

Supabase的权限模型的工作机制如下:

  1. 当用户访问Supabase应用程序时,gotrue会首先检查用户是否已经登录。如果没有登录,则gotrue会提示用户登录。
  2. 用户登录后,gotrue会向用户颁发一个JSON Web令牌(JWT)。JWT是一个包含用户身份信息的令牌,它可以用于在应用程序中对用户进行身份验证和授权。
  3. 当用户访问Supabase应用程序中的某个资源时,PostgREST会检查用户是否具有访问该资源的权限。如果用户具有访问该资源的权限,则PostgREST会将该资源返回给用户。否则,PostgREST会返回一个错误消息。
  4. PostgREST使用PostgreSQL RLS来检查用户是否具有访问某个资源的权限。PostgreSQL RLS会根据数据库管理员设置的访问控制规则来判断用户是否具有访问该资源的权限。

总结

Supabase的权限模型是一个强大而灵活的权限模型,它可以满足各种各样的应用程序的需求。Supabase的权限模型由PostgREST、PostgreSQL RLS和gotrue这三个核心组件组成。这些组件相互配合,可以实现用户登录认证、权限管理和数据访问控制等功能。