3

我正在使用需要用户权限和角色的 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 进行过多的编码?感谢所有帮助。

4

3 回答 3

2

你的角色表中有一些冗余

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

角色:

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

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

角色权限表

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

关于命名风格的另一件事:如果您用单数或复数名称命名您的桌子,请自行选择 - 不是一个复数,另一个是单数下一个......好吧,我希望你得到图片;)

于 2013-04-11T20:26:54.007 回答
1

您应该利用 .Net Framework 的Membership模块。它是管理 Web 应用程序中的用户和角色的标准方法,甚至可以使用此模块在桌面应用程序中管理用户。

至于 ASP.NET MVC,您可以在MembershipStarterKit在 Nuget 上可用)等成员模块之上找到实现标准屏幕和功能的项目。

如果可以避免,就不要重新发明轮子。

于 2013-04-11T20:13:08.743 回答
0

您冷轧您自己的自定义会员提供商。尽管这对于您的要求可能有点过分。

到目前为止,您所拥有的似乎还不错,只需创建一个用户类并在用户使用其适当权限登录时将其存储,然后创建几个函数,例如 isAllowedUpdate(roleID) 作为布尔值,isAllowedCreate(roleID) 作为布尔值等。

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

于 2013-04-11T20:10:01.733 回答