⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

PG行级安全策略实现

学习使用行级安全(RLS)控制用户对表中特定行的访问 · 难度:入门 · +15XP

行级安全概念

行级安全(Row-Level Security, RLS)允许基于用户角色定义策略,控制哪些行可以被查询、插入、更新或删除。

启用行级安全

-- 创建测试表
CREATE TABLE employee_data (
    id SERIAL PRIMARY KEY,
    name TEXT,
    department TEXT,
    salary NUMERIC
);

-- 启用RLS ALTER TABLE employee_data ENABLE ROW LEVEL SECURITY;

创建策略

-- 允许员工查看自己部门的记录
CREATE POLICY dept_policy ON employee_data
FOR SELECT
USING (department = current_setting('my.dept'));

-- 创建不同角色 CREATE ROLE hr_worker; CREATE ROLE finance_worker;

-- 授予权限 GRANT SELECT ON employee_data TO hr_worker, finance_worker;

测试策略

-- 设置会话参数模拟部门
SET my.dept = 'HR';
SELECT * FROM employee_data;  -- 只看到HR部门

SET my.dept = 'Finance'; SELECT * FROM employee_data; -- 只看到Finance部门

策略类型

命令策略类型
SELECTFOR SELECT
INSERTFOR INSERT(WITH CHECK)
UPDATEFOR UPDATE(USING + WITH CHECK)
DELETEFOR DELETE(USING)

练习提示

创建一张包含用户ID和数据的表,设置RLS策略使每个用户只能看到自己的数据。

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 131 篇
0 完成
🔥 0