具有不同角色类型的ASP.NET提供程序

时间:2009-11-24 11:22:14

标签: asp.net architecture membership provider roleprovider

在授权用户时,我要考虑不同类型的角色。 例如:John必须拥有职位经理,并成为Office Supplies 部门的一员才能订购新计算机。

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

我应该使用自定义roleProvider和自定义roleManager吗? 或者我应该开发一个自定义ProfileManager来添加像GetUsersWithProfileProperties()这样的方法吗?

欢迎任何建议!

蒂鲍特

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

编辑:我找到了very similar question

4 个答案:

答案 0 :(得分: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
            }
        }
    }

请澄清我是否误解了您的问题。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

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

希望将来可以帮助某人:)

答案 3 :(得分:-1)