小课堂,auth.users表简介
-
简介
MemFireCloud提供了一个auth.users表,用于存储用户身份验证信息。
出于安全目的,auth模式不会在自动生成的API上公开。
辅助函数
平台为您提供了一些简单的功能,您可以在策略中使用这些功能。
auth.uid()
返回当前前端请求的用户id值。
auth.jwt()
返回当前前端请求的用户jwt值。
auth.email() 函数已被弃用,转而使用auth.jwt() ->> 'email'
返回提出请求的用户的电子邮件。
管理用户数据
你可以在public模式中创建自定义的表格,用于存储与用户相关的数据,以便通过API进行访问和操作。这样可以灵活地组织和管理你的用户数据,并与
auth.users
表中的用户身份验证信息结合使用。创建用户表
当你创建用于存储用户数据的表时,参考auth.users
表的主键可以确保数据完整性。 在引用auth.users
时,还要指定on delete cascade
子句。省略此子句可能会在删除用户时导致问题。例如,一个
public.profiles
表可能如下所示:create table public.profiles ( id uuid references auth.users not null, first_name text, last_name text, primary key (id) ); alter table public.profiles enable row level security;
公共访问
由于启用了行级别安全性,因此可以通过API访问此表,但除非我们设置了一些策略,否则不会返回任何数据。 如果我们希望每个人都可以读取数据,但只允许登录用户更新自己的数据,则策略如下:
create policy "Public profiles are viewable by everyone." on profiles for select using ( true ); create policy "Users can insert their own profile." on profiles for insert with check ( auth.uid() = id ); create policy "Users can update own profile." on profiles for update using ( auth.uid() = id );
私人访问
如果数据只能由拥有数据的用户读取,我们只需要更改上面的for select查询。
create policy "Profiles are viewable by users who created them." on profiles for select using ( auth.uid() = id );
绕过行级安全性
如果您需要获取完整的用户配置文件列表,我们将提供一个service_key,您可以使用它与API和客户端库一起绕过行级别安全性。
确保你从未公开披露过。但它可以在服务器端用于获取所有配置文件。