gpt4 book ai didi

c# - ASP.NET 如何从 PostgreSQL 数据库中检查用户角色?

转载 作者:行者123 更新时间:2023-11-29 12:23:56 24 4
gpt4 key购买 nike

我是 C# 和 asp.net 的新手。

在我的 asp.net 项目中,我有一个下拉列表,显示来自 postgreSQL 数据库的信息取决于哪个用户登录。这是我的代码:

 protected void Button6_Click(object sender, EventArgs e)
{
//here's GridView settings, connections strings etc...

NpgsqlCommand cmd = new NpgsqlCommand();
NpgsqlDataAdapter sqlDa1 = new NpgsqlDataAdapter("SELECT * FROM vacations", conn); //show by executor
DataTable dtbl1 = new DataTable();
if ((string)Session["Name"] == "Smith")
{
sqlDa1.Fill(dtbl1);
GridView1.DataSource = dtbl1;
GridView1.DataBind();
}
else System.Diagnostics.Debug.WriteLine("You do not have permissions!!!");

问题是,我不会只有一个用户,所以我无法将每个新用户都添加到我的 if(){} else 语句中。我如何自动检查用户权限并取决于它显示/不显示信息

最佳答案

一种解决方案是创建不同的角色,将不同的权限关联到这些角色。例如,r_visitor 和 r_administrator。您会将每个用户添加到适当的角色

然后,您可以在数据库级别向角色授予权限,并且如您所问,您可以使用以下返回 bool 值的查询来检查您的应用程序是否具有给定角色:

SELECT EXISTS(
SELECT b.rolname rname,
c.rolname mname
FROM pg_auth_members a,
pg_roles b,
pg_roles c
WHERE a.roleid=b.oid
AND a.member = c.oid
AND b.rolname = 'r_visitor'
AND c.rolname='johnDoe');

如果您想了解继承角色(userA 属于 R1,R1 是 R2 的一部分 -> 我们想知道 userA 是否具有 R2 权限),请查看此 answer实现了一种递归的查找方式

关于c# - ASP.NET 如何从 PostgreSQL 数据库中检查用户角色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52287056/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com