Comment puis-je configurer un rôle par défaut pour un nouvel utilisateur en utilisant l'authentification Windows avec le SqlRoleProvider?

voix
1

J'ai une application qui utilise l'authentification Windows et un SqlRoleProvider pour l'authentification des utilisateurs et la gestion des rôles respectivement. Il fonctionne bien avec mes utilisateurs test que j'ai ajoutés à la base de données par défaut. L'application oblige les utilisateurs à se connecter (en utilisant les informations d'identification de Windows) et être en mesure d'utiliser cette application interne comme un « utilisateur » de base. Si l'utilisateur doit être ajouté à un rôle de haut niveau, un administrateur serait responsable de cela après la première connexion.

Cela dit, comment pourrais-je ajouter un utilisateur au rôle par défaut lors de leur première connexion? Logiquement, je sais que je devrais appeler Roles.IsUserInRole (), puis les ajouter si elles ne sont pas; cependant, où pourrais-je faire cela? Je vais avoir du mal à localiser des événements qui dans le Global.asax à utiliser.

Merci

EDIT: Pour développer le scénario un peu, je ne suis pas à l' aide d' un système complet de fournisseur d'appartenances en raison des exigences sur la rédaction de nouveaux fournisseurs pour permettre à la chaîne de connexion à stocker en dehors du web.config. Je n'utilise aucune forme d'inscription ou d'une page de connexion et de laisser l'authentification Windows intégrée dans IIS gérer les aspects d'authentification alors que mon SqlRoleProvider amélioré gère les rôles utilisateur. Le système fonctionne très bien pour les utilisateurs que j'ai des rôles de configuration via des tests codés en dur. Je suis à la recherche d'un moyen d'ajouter de nouveaux utilisateurs (qui serait authentifié par IIS) pour être immédiatement ajoutée à un défaut « Les utilisateurs » rôle. Je pense que je l' ai trouvé; Cependant, je suis maintenant d' examiner les moyens de faire ce pas le feu sur chaque demande pour des raisons de performance.

Créé 09/12/2008 à 21:13
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
0

Je voudrais ajouter le rôle par défaut à l'utilisateur directement après que l'utilisateur a été tiré par les cheveux.

Quelque chose comme par exemple:

user = Membership.GetUser()
if (user != null)
{
  // default role 
  string[] defaultRoles = {"MyRole"};

  AddUsersToRoles(user, defaultRoles); 

}
Créé 09/12/2008 à 21:23
source utilisateur

voix
1

J'ai pu trouver la solution après creuser et de jouer un peu plus. J'ai ajouté le code suivant à mon fichier Global.asax et il est en train d'accomplir ce que j'espérais.

protected void WindowsAuthentication_OnAuthenticate(object sender, WindowsAuthenticationEventArgs e)
{
    if (!Roles.IsUserInRole(e.Identity.Name, "Users"))
    {
        Roles.AddUsersToRole(new string[] { e.Identity.Name }, "Users");
    }
}

Je suis préoccupé car ce code se déclenche à chaque demande de page. Y at-il une meilleure façon de limiter lorsque cela se produit? Dois-je ajouter que ce code à l'événement page_load de page de destination au lieu du Global.asax?

Créé 09/12/2008 à 21:51
source utilisateur

voix
0

Pourquoi ne pas quand le login ou vous inscrire?

Lorsque la connexion, gérer cet événement et mettre cela. Vérifiez chaque fois qu'ils se connectent.

Créé 09/12/2008 à 22:08
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more