我的系统在用户和角色之间具有多对多的关系。考虑到这一点,我创建了一个表来容纳设计,称为RolesOfUser
。它基本上是这样的:
| User | Role |
|--------|----------|
| user1 | Maker |
| user1 | Approver |
| user1 | Admin |
| user2 | Maker |
| user2 | Approver |
| user3 | Maker |
| user3 | Admin |
数据库以这种方式设置,因为在程序中,某些功能仅适用于特定用户,即只有Makers可以添加新记录或更新现有记录,只有审批者可以批准或拒绝记录,只有管理员才能访问用户管理模块。此外,某些功能(如按钮等)也特定于某些用户类型。
我如何能够使用SqlMembership
将角色提取到我的C#程序中? SqlMembership
似乎没有我可以使用的属性,方法或事件。他们都是“GetUser”等,我需要一个“GetRole”。
答案 0 :(得分:0)
您在寻找GetRolesForUser(UserName)吗?
答案 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>
答案 2 :(得分:0)
你在拼图中遗失了太多碎片。结果,您的问题无法在一个答案中回答。
首先,
您希望将表格命名为 UsersInRoles ,这是该表的通用名称
如果您创建自己的用户,角色和UsersInRoles(RolesOfUser),则无法使用DefaultMembershipProvider。相反,您需要使用自定义成员资格提供程序和自定义角色提供程Google中有很多关于如何实施自定义提供商的文章。
最后,您可以调用RoleProvider's GetRolesForUser方法。