c# - 如何根据 SQL Server 中的用户角色调整 WPF 应用程序?
问题描述
我正在构建一个使用 C# 和 EDMX 文件作为数据访问层的 WPF 应用程序。
我在 SQL Server 2008 中有两个安全角色,AppUsers 和 AppAdmins。
是的,AppUsers 成员没有权限编辑一张表让我们称之为 T,只能从中选择数据。但是,AppAdmins 成员也可以在此表 T 中插入和更新数据。
我在 C# 中使用 try/catch 块在状态栏中报告错误,但我想根据用户角色从我的应用程序中关闭完整的模块,而不是等待用户使用我的应用程序并报告技术上不正确的错误一个错误,是 SQL 权限障碍。
如何获取当前用户角色?
EDMX 文件或实体框架文件中是否有一些 API 可用于获取用户角色?
我可以用 LINQ 命令得到它吗?
或者我应该开发 SQL 字符串查询并直接在数据库服务器上运行它?
解决方案
是的,您应该编写一个 SQL 查询来检索角色成员资格。EF 不会为您执行此操作。
就像是:
select name RoleName, is_member(name) IsUserInRole
from sys.database_principals
where type = 'R'
或者
select is_member('AppUsers') IsAppUser, is_member('AppAdmins') IsAppAdmin
推荐阅读
- python - 将列表映射到 1 和 0
- apache-spark - spark中的“加载”命令是动作还是转换?
- azure-ad-b2c - 本地帐户 AD B2C 自定义策略的多步注册表单
- elasticsearch - Elasticsearch 中的刷新是原子的吗?
- javascript - 如何在 react js 中渲染 html 文件以及支持文件夹?
- c# - 使用反射动态遍历未知复杂对象
- python - 如果已经以特定模式出现,则排除 pandas 数据框中的值
- scala - Datastax spark cassandra 连接器与 RetryPolicy 将 DF 写入 cassandra 表
- reactjs - 与受控组件的外部交互
- php - Close CSS only lightbox by clicking background without using Js