我如何使用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编写太多代码?
你的角色表中有一些冗余
权限表是可以的(尽管这通常被称为权限)
角色: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应用程序,我已经这样做过几次了。我通常只创建一个角色和用户表,并创建非常具体的角色—这取决于您希望特权的粒度。