Sql Membership,获取特定用户的角色列表

时间:2013-12-23 01:52:16

标签: c# tsql asp.net-membership membership-provider

我的系统在用户和角色之间具有多对多的关系。考虑到这一点,我创建了一个表来容纳设计,称为RolesOfUser。它基本上是这样的:

|  User  |   Role   |
|--------|----------|
| user1  |  Maker   |
| user1  | Approver |
| user1  |  Admin   |
| user2  |  Maker   |
| user2  | Approver |
| user3  |  Maker   |
| user3  |  Admin   |

数据库以这种方式设置,因为在程序中,某些功能仅适用于特定用户,即只有Makers可以添加新记录或更新现有记录,只有审批者可以批准或拒绝记录,只有管理员才能访问用户管理模块。此外,某些功能(如按钮等)也特定于某些用户类型

我如何能够使用SqlMembership将角色提取到我的C#程序中? SqlMembership似乎没有我可以使用的属性,方法或事件。他们都是“GetUser”等,我需要一个“GetRole”。

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

这可以使用应用程序中的表单身份验证来完成。 假设每个模块都在自己的目录中,您可以在web.config中为每个目录指定用户权限。

<configuration>
<system.web>
    <authentication mode="Forms">
        <forms name="MYWEBAPP.ASPXAUTH"
            loginUrl="login.aspx"
            protection="All"
            path="/"/>
    </authentication>
    <authorization>
        <allow users="*"/>
    </authorization>
</system.web>
<location path="administrators">
    <system.web>
        <authorization>
            <!-- Order and case are important below -->
            <allow roles="Administrator"/> <!-- Tell it what roll is allowed -->
            <deny users="*"/>
        </authorization>
    </system.web>
</location>
<location path="users">
    <system.web>
        <authorization>
            <!-- Order and case are important below -->
            <allow roles="User"/>
            <deny users="*"/>
        </authorization>
    </system.web>
</location>

参考 - Role Based Authentication

答案 2 :(得分:0)

你在拼图中遗失了太多碎片。结果,您的问题无法在一个答案中回答。

首先,

  1. 您希望将表格命名为 UsersInRoles ,这是该表的通用名称

  2. 如果您创建自己的用户,角色和UsersInRoles(RolesOfUser),则无法使用DefaultMembershipProvider。相反,您需要使用自定义成员资格提供程序和自定义角色提供程Google中有很多关于如何实施自定义提供商的文章。

  3. 最后,您可以调用RoleProvider's GetRolesForUser方法。