0

在授权用户时,我需要考虑不同类型的角色。例如:John 必须有职位经理并且是办公用品的一员才能订购新计算机。

Roles 的问题是 Roles.GetRolesForUser("John") 只能返回一个字符串数组。

我应该使用自定义 roleProvider 和自定义 roleManager 吗?还是我应该开发一个自定义 ProfileManager 来添加 GetUsersWithProfileProperties() 之类的方法?

欢迎任何建议!

蒂博

编辑:上面的例子被简化了,我可以有多达 4 种类型的角色,它们是 4 个不同的集合。

编辑:我发现了一个非常相似的问题

4

4 回答 4

2

从你写的;我相信您现在需要的一切都是开箱即用的:

    // Return all Users in a  Role
    string[] users;
    users = Roles.GetUsersInRole("RoleName");
    // Return all Roles for a User
    string[] roles;
    roles = Roles.GetRolesForUser();
    // Search through Membership store locating users with a role
    MembershipUserCollection mu;
    mu = Membership.GetAllUsers();
    // Loop through all membership users looking for users in a role

    foreach(MembershipUser m in mu){
        if(Roles.IsUserInRole(m.UserName, "Role Name")){
            // Do something

            // We can even nest to x levels
            if (Roles.IsUserInRole(m.UserName, "Another Role")){

                // Do something else
            }
        }
    }

如果我误解了你的问题,请澄清。

于 2009-11-24T11:53:24.963 回答
1

为什么不创建一个具有 Path-To-Level 类型约定的“CompositeRoleProvider”来访问每个从属角色提供者。您仍然需要创建多个角色提供者,但您的复合或顶级提供者会为您完成所有工作。我打算用 ProfileProvider 做类似的事情

于 2009-11-27T20:04:02.223 回答
0

我正在研究如何解决一个非常相似的问题,我得出的结论是,最好的办法是实现自定义角色提供程序。

我使用这个(http://msdn.microsoft.com/en-us/library/317sza4k(v=vs.100).aspx)作为基础,我将实现我的方法,如(IsManager,GetDepartment,ecc) .

数据将存储在连接到 aspnet_users 表的自定义表中。

希望它可以帮助将来的人:)

于 2012-10-26T13:18:09.593 回答
-1

我认为有一种方法 GetUsersInRole。 http://msdn.microsoft.com/en-us/library/system.web.security.roles.getusersinrole.aspx

于 2009-11-24T11:32:55.017 回答