2010-07-15 3 views
1

J'ai utilisé le modèle Silverlight BusinessApplication dans VS2010. J'ai changé le AuthenticationService pour employer mes propres méthodes d'authentification - l'exigence est que l'utilisateur se connecte au système avec leur connexion SQL (aucune AD dans l'entreprise).Création d'ObjectContext pour AuthenticationService sans nom d'utilisateur et mot de passe

Lors de la connexion, je construis une SQLConnection, j'essaie de l'ouvrir, puis j'obtiens leurs détails (nom convivial, rôles, etc.) d'une table Utilisateur. Je stocke ensuite le nom d'utilisateur et le mot de passe qu'ils ont entré et chaque fois qu'ils frappent la base de données via un DomainService, je substitue CreateObjectContext et insère le nom d'utilisateur et mot de passe qu'ils ont entré dans la base de données.

J'ai changé le AuthenticationService pour hériter de IAuthentication et LinqToEntitiesDomainService, principalement pour accéder à la table utilisateur.

Je suis en cours d'exécution dans un problème lors du démarrage de l'application, avant que l'utilisateur a ouvert une session dans le contrôle LoginStatus qui vient avec le modèle de BusinessApplication a la ligne suivante:.

private readonly AuthenticationService authService = WebContext.Current.Authentication; 

Cela provoque le constructeur de mon AuthenticationService doit être appelé et, dans ce cadre, le ObjectContext est tenté d'être créé mais l'utilisateur n'est pas encore connecté, donc je n'ai pas de nom d'utilisateur + mot de passe à ajouter dans la chaîne de connexion. Pour dev. fins que je viens d'utiliser mon nom d'utilisateur et mot de passe si pas connecté, mais je suis maintenant obligé de résoudre ce problème.

Des idées sur comment je peux contourner cela? Mes options autant que je peux voir sont:

  • Ne pas utiliser EF (je préfère l'utiliser car le reste de mon accès aux données est fait en utilisant EF).
  • Créez un utilisateur fictif dans la base de données et utilisez-le comme référence si vous n'êtes pas connecté (pas idéal).

Existe-t-il un autre moyen de contourner ce problème? Lors de la construction de mon AuthenticationService, CreateObjectContext est-il appelé?

Toute aide/suggestion appréciée.

Mise à jour

J'ai changé AuthenticationService d'hériter de DomainService plutôt que LinqToEntitiesDomainService et a utilisé un SqlDataReader pour obtenir les données de l'utilisateur qui a été nécessaire, mais je suis stil curieux de savoir s'il y a une autre façon.

Répondre