- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在努力研究 Postgres 中的行级安全性。不幸的是,文档在这个问题上不是很详细。我的问题如下:
我有两个表:locations
和 locations_owners
。在 INSERT
上为位置设置了一个 TRIGGER
,它会自动向 locations_owners
表添加一个新行,包括 request.jwt .claim.sub
variable .
这一切都很好,但是当我想像这样为 DELETE
创建策略时:
CREATE POLICY location_delete ON eventzimmer.locations FOR DELETE TO organizer USING(
(SELECT EXISTS (SELECT name FROM protected.locations_owners AS owners WHERE owners.name = name AND owners.sub = (SELECT current_setting('request.jwt.claim.sub', true))))
);
无论实际内容如何,它的计算结果始终为真。我知道我可以在此处使用 SELECT
调用自定义过程,但我最终遇到了以下问题:
政策
的范围是什么?我可以访问表格吗?我可以访问程序吗?文档说 “任何 SQL 条件表达式” 所以 SELECT EXISTS
应该没问题name
变量采用了它),但是我还没有找到关于它实际做什么的任何文档user_name
变量。它从何而来?我相信是当前的角色
正在执行查询,但我怎么知道呢?DELETE
的WITH CHECK
表达式?如果我理解正确,WITH CHECK
将失败
任何具有无效约束的行,这是我更喜欢的行为(因为否则 PostgREST 将始终返回 204
)我对 PostgreSQL 的(否则)非常好的文档中惊人地缺失的大量信息感到有点困惑。这些信息在哪里?我怎样才能找到它?
为了完整起见,我还附上了下面的列定义:
CREATE TABLE eventzimmer.locations (
name varchar PRIMARY KEY NOT NULL,
latitude float NOT NULL,
longitude float NOT NULL
);
CREATE TABLE IF NOT EXISTS protected.locations_owners (
name varchar NOT NULL REFERENCES eventzimmer.locations(name) ON DELETE CASCADE,
sub varchar NOT NULL
);
最佳答案
一旦您了解了行级安全性的实现方式,许多问题就会变得清晰:策略中的条件将自动添加到查询中,就像您添加了另一个 WHERE
条件一样。
使用 EXPLAIN
查看查询计划,您将在其中看到策略的条件。
因此您可以使用定义策略的表中的任何列。
基本上,您可以在策略定义中使用您可以在 WHERE
条件中使用的任何内容:函数调用、子查询等。
如果需要消除歧义,您还可以使用表名限定列名。这可以在您示例的策略中使用:未限定的 name
被解释为 owners.name
,因此测试总是成功的。要修正政策,请使用 locations.name
而不是 name
。
没有神奇的 user_name
变量,我不知道您是从哪里得到的。但是,current_user
函数始终可用,当然也可以在策略定义中使用。
WITH CHECK
是 INSERT
或 UPDATE
添加的新行必须满足的条件。由于 DELETE
不添加任何数据,因此 WITH CHECK
不适用于它。
关于postgresql - Postgres 政策的范围是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58300183/
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 4年前关闭。 Improve t
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我需要准备一个关于 iOS 移动设备管理的演示文稿。我被要求包括已实现的政策并选择其中一项并详细描述。问题是,我不知道存在哪些不同的政策。请帮帮我。 最佳答案 这里是您需要了解的有关 MDM 和 MD
我正在尝试使用 ThreadPoolExecutor 来安排任务,但在其策略方面遇到了一些问题。这是其声明的行为: 如果运行的线程少于 corePoolSize,执行器总是倾向于添加新线程而不是排队。
这是默认 Adsense 代码的示例, (adsbygoogle = window.adsbygoogle || []).push({}); 缩小后, “双引号”从代码中剥离。 (ad
假设我有一个模型用户,它可以有多个房子。这些房子可以有多个 parking 位,然后可以有多个汽车或自行车 用户 > 房屋 > parking 位 > [汽车、自行车] 如何检查汽车是否与用户相关?
我有一个管理 iOS 设备的 mdm 服务器。我们已经完成了在设备上安装 mdm 配置文件的所有步骤。此外,我们还应用了适用于设备和 Wi-Fi 等配置的所有政策。 问题 1: 当我们发送“allow
请问如何使用 C# 编辑 gpedit.msc 策略? 最佳答案 gpedit.msc 只是注册表设置的一个接口(interface); gpedit 没有 API 或暴露的框架。要像 gpedit
当我尝试运行我的网站时,它显示 500 internal server error : Internal Server Error The server encountered an internal
在 Play 商店中发布新内容时,它会在下面询问 如果您的应用的某些部分因登录凭据、成员(member)资格、位置或其他形式的身份验证而受到限制,请提供详细信息,以便 Google 审核您的应用 -
我在我应用的admin部分中使用pundit进行访问控制。我有一个仪表板 Controller ,如下所示: class Admin::DashboardsController < AdminCont
我写了一个 Chrome 扩展,它使用本地存储。 当我打开 chrome://policy/在浏览器中,我可以根据其 ID 查看我的扩展程序的数据,但是,当我在注册表中手动更改该值时,它不会自动更新。
当在 Cassandra 中使用 token 感知策略作为负载平衡策略时,所有查询都会自动通过正确的节点发送(其中包含副本,例如 select * from Table wherepartionkey
我想在同一事件中同时展示横幅广告和插页式广告。但我不确定这是否会违反 Google admob 政策,因为当显示插页式广告时,它会覆盖横幅广告。 谢谢。 最佳答案 这是允许的。事实上,建议您这样做以增
您好,我想知道是否通过设置 User Interface Style 来强制我的应用程序进入灯光模式至Light在 plist 中可能会导致我的应用程序被拒绝?? 最佳答案 Official Docu
我想在同一事件中同时展示横幅广告和插页式广告。但我不确定这是否会违反 Google admob 政策,因为当显示插页式广告时,它会覆盖横幅广告。 谢谢。 最佳答案 这是允许的。事实上,建议您这样做以增
我在我的应用程序中使用 Navigation-Drawer。所以我用 navigation_drawer 布局创建了单个 Activity 。每当用户从抽屉导航菜单中选择菜单选项时,我都会使用 fra
我在弄清楚 sails 政策时遇到困难,我按照教程进行操作,但仍然无法使其工作。 在我的policies.js 文件中: module.exports.policies = { '*':true,
我开始收到很多类似这样的 sails 政策: ... 'MyController':{ 'some': ['runPassport', 'isLoggedIn', 'ensureTotpOkI
如何在 htmlunit 中指定 cookie 策略以接受所有 cookie? 最佳答案 只需重新创建整个 CookieManager 类:这是类(class)的来源:http://jarvana.c
我是一名优秀的程序员,十分优秀!