Question

J'ai différents types de rôles à prendre en compte lors de l'autorisation d'un utilisateur. Par exemple:. John doit avoir Position Manager et faire partie des fournitures de bureau Département pour commander un nouvel ordinateur

Problème avec les rôles est Roles.GetRolesForUser ( « John ») ne peut retourner un tableau de chaînes.

Dois-je aller avec une coutume RoleProvider et la coutume roleManager? ou devrais-je développer un ProfileManager personnalisé pour ajouter des méthodes comme GetUsersWithProfileProperties ()?

Toute suggestion est la bienvenue!

Thibaut

EDIT: l'exemple ci-dessus I est simplifiée pourrait avoir jusqu'à 4 types de rôles qui sont 4 collections différentes.

EDIT: J'ai trouvé un très similaire question

Était-ce utile?

La solution

pourquoi ne pas créer un « CompositeRoleProvider » avec un chemin à niveau convention typew pour accéder à chaque fournisseur de rôle subalterne. Vous devrez toujours créer plusieurs fournisseurs de rôle, mais votre fournisseur Composite ou niveau supérieur fait tout le travail pour vous. Je prévois de faire une chose similaire avec ProfileProvider

Autres conseils

D'après ce que vous écrivez; Je crois que tout ce que vous avez besoin est actuellement disponible sur la boîte:

    // 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
            }
        }
    }

S'il vous plaît préciser si je l'ai mal compris votre question.

J'étudie comment résoudre un problème assez similaire et je suis venu à la conclusion que la meilleure chose à faire est de mettre en œuvre un fournisseur de rôle personnalisé.

J'utilise ce (http://msdn.microsoft.com/en-us/library/317sza4k(v=vs.100).aspx) comme base et je vais mettre en œuvre mes méthodes comme (ismanager GetDepartment , ecc).

Les données seront stockées dans des tableaux personnalisés qui sont joints à la table aspnet_users.

Je espère que ça peut aider quelqu'un à l'avenir:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top