J'essaie d'implémenter un identifiant pour mon application. L'utilisateur peut avoir plusieurs rôles (visionneuse, opérateur, administrateur, etc.). Mais il doit choisir un certain rôle avec lequel il veut se connecter, donc il a probablement des administrateurs mais il peut se connecter en tant que "Viewer" sans droits d'administrateur.C# Connexion RoleProvider avec rôle spécifique
Le problème est maintenant que si j'essaie de sécuriser certaines fonctions avec l'attribut RequiredRole pour un administrateur, l'utilisateur ne devrait pas pouvoir accéder à cette fonction s'il est connecté en tant que spectateur, même s'il aurait des droits d'administrateur.
Est-ce qu'un tel support est supporté par le framework ou est-ce que quelqu'un a déjà fait quelque chose de similaire?
Merci quand même pour votre aide
Salut, merci pour votre réponse rapide :) ainsi de côté client i peut l'objet acces utilisateur: WebContext.Current.User Cet objet utilisateur personnalisé a les deux propriétés CurrentRole et AvailableRoles. Le login où l'utilisation peut sélectionner son rôle est également déjà implémenté, mais maintenant je ne sais pas comment accéder à ce CurrentRole dans mon RoleProvider pour adapter ma méthode GetRolesForUser, qui je pense devrait juste retourner ce rôle actuel? Ou dois-je adapter la méthode IsUserInRole? Merci pour votre aide =) – huserben
Vous devrez implémenter 'IsUserInRole', et probablement' GetRolesForUser'. De ces deux, vous devriez être en mesure d'accéder à 'HttpContext.Current', et à partir de là, vous avez accès aux objets User et Session. Cela devrait être tout ce dont vous auriez besoin. GetRolesForUser ne doit renvoyer que le rôle "Actuel". – Richard
Salut à nouveau, merci, je l'ai essayé maintenant de cette façon ... à mon avis cela devrait fonctionner ... mais j'ai rencontré une exception maintenant: comme mentionné, nous avons un objet utilisateur personnalisé pour stocker ces informations supplémentaires comme le rôle actuel quand j'essaie maintenant d'accéder à HttpContext.Current.User il est de type IPrincipal alors que WebContext.Current.User est notre objet personnalisé, donc je ne suis pas en mesure d'accéder aux informations nécessaires =/ Je pense que si je recevais cette information mon problème serait résolu ... – huserben