2009-02-09 5 views
1

J'ai une application MVC qui contient entre autres un petit menu Silverlight qui est affiché dans la page .Master utilisée dans la plupart des pages.Silverlight 2 obtenir des informations d'appartenance/identité à partir de l'application MVC

J'ai également écrit un MembershipProvider (et un fournisseur de rôle) qui utilise la base de données de mon application pour authentifier et autoriser les utilisateurs. Fonctionne bien. Cependant, je souhaite que le menu Silverlight contienne des éléments supplémentaires si l'utilisateur est dans le rôle d'administrateur. Bien sûr, une possibilité consiste à créer deux applications de menu Silverlight et à choisir celle à afficher en fonction de l'utilisateur dans la page maître. Mais cela a un ring de laid pour moi.

La meilleure option serait si l'application Silverlight pouvait comprendre l'identité de l'utilisateur connecté et l'utiliser pour se configurer pour afficher les options d'administration.

Existe-t-il un moyen simple de faire quelque chose comme ça? L'application MVC et les applications Silverlight sont déployées sur le même serveur IIS7 et font partie de la même solution.

Les solutions que j'ai trouvées sur le web invitent jusqu'à présent l'utilisateur à se connecter séparément à l'application Silverlight ou à travailler beaucoup avec les services WCF. Si je le dois, je vais suivre cette voie, mais je suis coincé avec le sentiment qu'il devrait y avoir un moyen élégant et facile de le faire. Je crois fermement au principe KISS, donc la simplicité est très appréciée!

Merci!

+0

Pour clarifier un peu après l'entrée de Dave, je veux simplement que mon application Silverlight affiche le bon menu pour l'utilisateur - y compris les éléments d'administration si l'utilisateur est autorisé pour eux. Je veux juste savoir si le client Web obtient les options supplémentaires ou non - mais je ne sais pas comment. :) –

Répondre

1

Je suis à peu près convaincu que votre menu Silverlight ne devrait pas avoir à savoir si l'utilisateur est un administrateur ou non.

Si vous avez un contrôle de menu "style générique" qui peut afficher n'importe quel nombre d'éléments, alors je pense que ces éléments doivent être communiqués. La vue principale doit alors décider des éléments à afficher. Mieux encore, un contrôleur devrait renvoyer les éléments à afficher en fonction de l'état de l'utilisateur et la vue principale devrait juste les rendre.

Si vous avez un contrôle de menu spécialement conçu pour tenir dans votre application Web qui n'est pas vraiment conçue pour afficher un nombre quelconque d'éléments, la vue principale doit simplement définir une propriété ou quelque chose pour communiquer ce fait. Le reste de votre question m'a un peu dérouté, mais je suis convaincu que votre composant Silverlight n'est pas une "application" complète en elle-même, juste une partie de la présentation.

+0

Salut Dave, merci pour votre réponse. Oui, je suis d'accord sur le fait que Silverlight devrait récupérer les éléments de menu quelque part - mais comment un contrôleur peut-il savoir si l'application Silverlight est le même utilisateur qui utilise l'application Web? AFAIK Silverlight n'hérite pas des cookies de l'application MVC ... –

+0

Franchement, je ne sais pas. Je suppose que votre 'application' Silverlight est juste un contrôle intégré sur votre page. –

+0

Oui, vous avez raison - ce n'est en aucun cas l'ensemble de l'application, juste un menu parfaitement intégré dans chaque page. –