将管理员从用户登录windows应用程序窗体隔离到数据库C#

将管理员从用户登录windows应用程序窗体隔离到数据库C#,c#,database,authentication,authorization,C#,Database,Authentication,Authorization,) 我在区分普通用户登录和管理员登录时遇到了一些问题 管理员应该在数据库中查看*数据,并自由更改任何他/她想要的数据,而用户可能只看到允许的数据而不进行编辑 有没有一种方法可以在DB本身中设置权限 感谢您在前面的发言。您需要通过在用户表中添加一个字段来区分用户(管理员/用户)。 例如,如果IsAdmin字段为true,则登录的用户为admin,您可以授予他在windows应用程序中的编辑权限 当用户登录时,您可以将其状态(IsAdmin)保存在全局变量中 这是最简单的方法。最简单的实现是基于角色

)

我在区分普通用户登录和管理员登录时遇到了一些问题

管理员应该在数据库中查看*数据,并自由更改任何他/她想要的数据,而用户可能只看到允许的数据而不进行编辑

有没有一种方法可以在DB本身中设置权限


感谢您在前面的发言。

您需要通过在用户表中添加一个字段来区分用户(管理员/用户)。 例如,如果
IsAdmin
字段为
true
,则登录的用户为admin,您可以授予他在windows应用程序中的编辑权限

当用户登录时,您可以将其状态(IsAdmin)保存在全局变量中


这是最简单的方法。

最简单的实现是基于角色的登录。您可以将角色属性保存在用户表中,并在用户每次登录时读取该属性。下面是一个示例实现:

对于更细粒度的访问和更复杂的权限,我们可以使用基于控件的安全性。这使得角色权限可以通过数据库进行编辑。示例实现:


你需要决定(并描述)你想做什么。如果您使用的是带有“Windows集成安全性”的SQL Server,那么在访问数据库时,您将/可以使用用户的令牌(反映在进程令牌中)。数据库可以提供安全性。如果您正在编写一个web应用程序,那么很可能无法做到这一点,您需要决定要使用什么身份验证/授权机制集成安全性在这里不是一个选项,因为数据库将是集中的,像200000用户一样可以访问它。你还可以给我其他的建议吗?顺便说一句,像这样的信息应该在问题中。据我所知,根据你的问题,这可能是一个简单的桌面应用程序,可能使用MS Access。你没有提到你正在使用的数据库,你没有提到桌面与web,你没有提到框架(web表单、MVC、后端有REST的Angular客户端),用户数量。顺便说一句,你可能想要一组比管理员/用户更精细的角色谢谢你的解决方案@Wildan Muhlls,你救了我一天。我喜欢switch-case方法,但通过多外键绑定角色、用户和控件似乎要整洁得多。我将尝试(应用解决方案}捕获{如果需要帮助}谢谢。:-)