sql-server - 如何在 SQL 中为 EF Core 中的 RLS 设置会话上下文
问题描述
我们有一个在 .Net Core 3.1 中开发的 Web api,它与 Azure SQL db 通信并作为 Azure Web 应用程序运行。该数据库是多租户应用程序的单个数据库,并受行级安全性保护。它需要在执行任何 SQL 语句之前设置会话上下文。会话上下文是租户表的主键,是一个整数。
我了解到我可以使用EF Core 拦截器并设置会话上下文。然而,出于安全原因,我们无法在 URL 中发送/接收租户 ID 作为参数,因此我们使用了另一个看起来像加密字符串的标识符。考虑到我们有一个租户标识符,将会话上下文设置为租户 ID 的最有效方法是什么?API 是无状态的,所以我不能使用会话,控制器不需要身份验证,所以我也没有登录用户。最后一个选项,可能也是最丑陋的方法是在服务器端硬编码和维护一个列表,这样我就不必每次都进行数据库访问。
解决方案
考虑到@JeroenMostert 的评论,我决定进行一次数据库之旅,因为它不会很昂贵,因为数据不会返回给客户端。但是在获得一些好的知识和理解之后,我肯定会考虑使用内存优化表。
推荐阅读
- c++ - 基于unique_ptr参数指针类型的重载函数
- java - WebExpressionVoter 不支持 ROLE_ANONYMOUS
- javascript - Javascript - 音频元素不在 iOS 上播放
- rust - 使用内联汇编在 Rust 中读取 ebx 寄存器的值(“rbx 由 LLVM 内部使用,不能用作内联 asm 的操作数”)
- node.js - 反应原生'无法在项目中找到博览会
- reactjs - 带有 react-beautiful-dnd 的 React Bootstrap 下拉菜单
- event-handling - 逻辑编程中的事件驱动编程范式
- docker - Docker 容器退出状态
- xamarin.forms - 如何在自动化脚本中验证 Firebase 分析事件?
- javascript - 测试文件时遇到错误