我如何使用c# / VB (web表单或MVC)与ms sql server管理用户角色和权限

本文关键字:server sql ms 管理 用户 权限 角色 MVC 何使用 VB 表单 | 更新日期: 2023-09-27 18:08:47

我正在用ms sql server和c#开发和应用程序,需要用户权限和角色。目前,我创建的表是这样的。

 'privileges_table
  PrivilegeID | PrivilegeName
       1      |  Create
       2      |  Update
       3      |  Delete
       4      |  View
  Roles_Table
  RolesID     | RolesName  | PrivilegeID  | RolesGroup
     1           Admin          1         |   1
     2           Admin          2         |   1
     3           Admin          3         |   1
     4           Secretary      2         |   4
     5           Remote User    4         |   5
  User_Table
  UserID   |  UserName   | UserPass  | RoleGroup
    1      |  Wale       | m%^#@     |     1
    2      |  Jane       | k*&%$#    |     5
  '

我该怎么做才能以更好的方式来管理这个问题,以减少冗余,并且仍然避免用我的c#/VB编写太多代码?

我如何使用c# / VB (web表单或MVC)与ms sql server管理用户角色和权限

你的角色表中有一些冗余

权限表是可以的(尽管这通常被称为权限)

角色:

ID | Name
---+----------
1  | Admin
2  | Secretary
3  | Remote User

由于单个角色可以有多个权限,并且单个权限可以分配给多个角色,因此我们有一个n:m(或多对多)关系,该关系由连接表解析

RolePermissionTable

ID | RoleID | PrivilegeID
---+--------+-------------
1  | 1      | 1
2  | 1      | 2
3  | 1      | 3
4  | 2      | 2
5  | 3      | 4

还有一件关于命名风格的事情:如果你用单数或复数名字来命名你的表,你自己选择——不是一个是复数,另一个是单数,下一个…好吧,我希望你明白了;)

你应该充分利用。net框架的Membership模块。它是在web应用程序中管理用户和角色的标准方法,甚至有使用该模块管理桌面应用程序中的用户的桥接。

对于ASP。. NET MVC中,你可以找到在成员模块之上实现标准屏幕和功能的项目,比如MembershipStarterKit(在Nuget上可用)。

如果可以避免,就不要做无谓的重复工作。

您可以滚动您自己的自定义成员资格提供程序。虽然这对你的要求来说可能有点过分了。

到目前为止,您所得到的似乎很好,只需创建一个用户类并在用户以适当的权限登录时存储它,然后创建几个函数,如isAllowedUpdate(roleID)为布尔值,isAllowedCreate(roleID)为布尔值等。

对于需要特权的简单web应用程序,我已经这样做过几次了。我通常只创建一个角色和用户表,并创建非常具体的角色—这取决于您希望特权的粒度。