Question

Je suis la conception d'une application ASP.NET qui doit prendre en charge « » sous-sites.

L'idée est d'avoir un super administrateur à gérer tous les utilisateurs, les paramètres d'application globale et sous-sites. Chaque sous-site quelques-unes de ses propres paramètres (comme un administrateur local, le logo et le message de bienvenue) et chaque sous-site a sa propre liste des utilisateurs enregistrés.

Ceci est très similaire à ce que vous obtenez en utilisant un CMS tel que Joomla, SharePoint ou DotNetNuke. En fait, je suis tenté d'utiliser une telle plate-forme, mais d'autres exigences du projet me empêchent de le faire.

Mes questions sont très générales à ce point:

  1. Utilisation ASP.NET 2.0 d'adhésion, comment ce que je désigne un super-admin et classer les utilisateurs en fonction de la sous-site dans lequel ils se sont inscrits?
  2. Comment puis-je mettre en œuvre (quels sont les modèles sous-sites doivent être utilisés, etc.) ? Je suis particulièrement intéressé par des articles qui expliquent comment les autres ont fait. Je voudrais apprendre les meilleures pratiques que les autres ont acquises, sans passer des journées à creuser dans le code source d'un grand projet open source comme DotNetNuke.

Je suis dans l'exécution du présent ASP.NET MVC 1.0, des exemples similaires seront les plus utiles.


Mise à jour: J'aime comment Mike Hadlow mis en œuvre multi-location et j'ai décidé d'utiliser son travail comme point de départ. Voir cette post pour plus d'informations sur la façon dont j'utilise SqlMembershipProvider avec chaque locataire ayant leur propre isolé base de données. Cela permet de résoudre mon adhésion "basé sur subsite" problème.

Était-ce utile?

La solution

Qu'est-ce que vous essayez est plus communément appelé « mutualisée », et non " "sous-sites

Il y avait un question similaire à cela, et la réponse acceptée semble plausible.

Autres conseils

Pardonnez-moi si je ne comprends pas ce que signifie « sous-site », utilisez-vous ce terme pour faire référence à l'idée de créer des mini-sites au sein d'un grand site maître? Si oui, je pense que je comprends ce que vous voulez faire, mais je dois dire que le système d'adhésion en asp.net 2.0 est très bien un cadre que vous auriez besoin pour fonctionner dans de créer ce que vous voulez.

De toute façon, comment I le ferait (et cela est fondée sur l'appartenance .net utilisé hors-the-box):

ASP.NET vous permet de joindre « rôles » aux utilisateurs et « profil » des attributs aux utilisateurs aussi. Les profils sont utilisés pour attacher des choses telles que « Numéro de téléphone » et d'autres méta-données aux utilisateurs, mais vous pourriez tout aussi bien l'utiliser pour joindre leur maison « subsite » pour eux.

Je créerais un rôle appelé « globaladmin », créer vous-même en tant qu'utilisateur et vous attribuer (et seulement vous) à ce rôle. Je puis créer un « siteadmin » rôle et affecter l'utilisateur d'administration de chaque sous-site à ce rôle, mais en faisant très attention à leur attribuer une entrée de profil « site » qui a la valeur correspondant au site, ils sont admin.

Par exemple, « user123 » serait attribué à la « siteadmin » rôle et leur « site » attribut de profil pourrait être « subsitexyz ». Ils seraient alors identifiés comme l'administrateur de ce site.

Ce qui précède est réalisable mais si vous voulez vraiment faire cela aussi lisse que possible, créer votre propre MembershipProvider (SubsiteMembershipProvider) et de créer une nouvelle classe SubsiteMembershipUser qui hérite de MembershipUser que vos nouveaux rendements du fournisseur. Vous pouvez ensuite ajouter vos propres propriétés à SubsiteMembershipUser que votre application peut interroger pour savoir quel site l'utilisateur appartient à:

//get current logged on user - cast it to our custom membership user object
SubsiteMembershipUser thisUser = (SubsiteMembershipUser)GetUser(); 
if(thisUser.SubsiteName == SiteUserIsBrowsingString
&& Roles.IsUserInRole(thisUser.UserName, "siteadmin"))
  //user is admin for this site so do something
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top