2009-12-19 9 views
3

J'essaie de mettre en œuvre l'Autorisation et l'Authentification dans mon projet Winforms actuel. L'authentification doit également correspondre à un utilisateur dans une base de données SQL Server 2008. Le problème est qu'il s'agit d'un programme multi-utilisateur. Lorsqu'un nouvel utilisateur est ajouté, une base de données est créée et l'identité des utilisateurs est ajoutée à la base de données.Implémenter IPrincipal dans le projet winforms

Je me suis demandé si cela était possible en implémentant IPrincipal et IIdentity. J'ai seulement trouvé des implémentations d'ASP.NET jusqu'ici. Quelqu'un peut-il me donner des conseils quant à la meilleure façon d'implémenter la sécurité mot de passe/ID utilisateur dans une application WinForms? En gardant à l'esprit qu'il doit être vérifié avec une base de données dans SQL Server. Cela signifie qu'une base de données doit exister pour cet utilisateur et que ses informations d'identification doivent être correctes.

+0

La façon dont vous authentifiez les utilisateurs et comment vous représentez par la suite les utilisateurs authentifiés est deux choses différentes. Demandez-vous comment implémenter IPrincipal ou comment authentifier les utilisateurs en utilisant un mécanisme de nom d'utilisateur/mot de passe? –

+0

Je veux vraiment savoir comment authentifier les utilisateurs en utilisant psw/nom d'utilisateur? –

+0

Etes-vous sûr que c'est vraiment ce que vous voulez faire? L'utilisation d'un mécanisme d'authentification personnalisé pour un client riche est une chose assez inhabituelle à faire. Normalement, il est préférable de s'appuyer sur les mécanismes de sécurité intégrés de Windows. Peut-être avons-nous besoin d'un peu de contexte ici. Une application de type kiosque est l'un des rares exemples auxquels je peux penser où cela aurait du sens. –

Répondre

7

Vous pouvez implémenter votre propre objet IPrincipal en écrivant une classe qui implémente cette interface.

Puisque vous allez utiliser une source autre que Windows pour fournir un nom d'utilisateur et un mot de passe, vous devrez également écrire votre propre implémentation IIdentity.

Heureusement, ce ne sont pas de grandes interfaces.

Pour votre IIdentity personnalisé, je voudrais créer un formulaire de connexion qui tente de trouver une combinaison nom d'utilisateur/mot de passe dans la base de données SQL 2008. Si trouvé, votre seul souci est alors comment peupler les "rôles" de cet utilisateur pour fournir des fonctionnalités pour la méthode IsInRole(string roleName) hors de l'interface.

Voici un lien vers un Aussi, detailed article on how to accomplish in both Winforms and ASP.NET

MISE À JOUR

une fois que vous attachez ce principe au thread courant (et les threads suivants créés), vous pouvez également ajouter des attributs à votre code " demande "le Principal actuel appartient à un rôle donné, ou a un prénom. Un bon article example of that is this.

+0

super article! Je vais certainement le lire !! :) –

+0

@TonyTheLion - cela vous dérangerait-il de marquer cette réponse comme acceptée? –

Questions connexes