Frage

Ich bin der Gestaltung einer ASP.NET-Anwendung, die ‚subsites‘ unterstützen muss.

Die Idee ist, ein Super-Administrator verwaltet alle Benutzer zu haben, die globalen Anwendungseinstellungen und Unterseiten. Jede Subsite hat einige seiner eigenen Einstellungen (wie ein lokales admin, Logo und Begrüßungstext) und jedes Subsite hat seine eigene Liste der registrierten Nutzer.

Dies ist sehr ähnlich mit dem, was Sie ein CMS wie Joomla, Sharepoint oder DotNetNuke erhalten werden. In der Tat bin ich eine solche Plattform, aber auch andere Anforderungen an das Projekt zu tun, das zu verhindern, mich zu verwenden versucht.

Meine Fragen sind sehr allgemein an dieser Stelle:

  1. Verwenden ASP.NET 2.0 Mitgliedschaft , wie würde ich ein Super-Administrator benennen und klassifizieren Benutzer basierend auf der Subsite , in dem sie registriert sind?
  2. Wie würde ich subsites implementieren (welche Muster verwendet werden soll, usw.) ? Ich bin besonders in Artikel interessiert, die erklären, wie andere dies getan haben. Ich möchte die besten Praktiken lernen, die andere erworben haben, ohne Tage graben in den Quellcode einer großen Open-Source-Projekt wie DotNetNuke zu verbringen.

Ich bin die Umsetzung dieses in ASP.NET MVC 1.0, so ähnliche Beispiele sehr hilfreich sein werden.


UPDATE: Ich mag, wie Mike Hadlow Multi-Tenancy umgesetzt und ich habe beschlossen, seine Arbeit als Ausgangspunkt zu verwenden. Siehe diesen Beitrag für Informationen darüber, wie ich bin mit SqlMembershipProvider mit jedem Mieter ihre eigenen Datenbank isoliert. Das löst meine Mitgliedschaft "basierend auf Subsite" -Problem.

War es hilfreich?

Lösung

Was Sie versuchen, wird häufig auch als „ Multitenancy “, nicht " subsites "

Es gab eine ähnliche Frage dazu und die akzeptierte Antwort klingt plausibel.

Andere Tipps

Verzeihen Sie mir, wenn ich nicht verstehen, was „Unterseite“ bedeutet, verwenden Sie diesen Begriff auf die Idee zu verweisen schaffen Mini-Websites innerhalb eines Grand Master Site? Wenn ja, ich glaube, ich verstehe, was Sie tun möchten, aber ich würde sagen, dass die Mitgliedschaft System in asp.net 2.0 ist sehr viel ein Rahmen, die Sie innerhalb arbeiten müssen würden zu schaffen, was Sie wollen.

Wie auch immer, wie I würde es tun (und dies basiert auf .net Mitgliedschaft verwendet wird, out-of-the-box):

ASP.NET ermöglicht es Ihnen, ‚Rollen‘ auf Benutzer und ‚Profil‘ Attribute auf die Benutzer zu befestigen. Die Profile werden verwendet, um Dinge zu befestigen wie „Telefonnummer“ und andere Meta-Daten für die Nutzer, aber man könnte genauso wie es auch verwenden, um ihre Heimat ‚Subsite‘ heftet sie an sich als gut.

Ich würde eine Rolle erstellen ‚Global‘ genannt, erstellen Sie sich als Benutzer und weisen Sie (und nur) zu dieser Rolle. Ich würde einen ‚Siteadmin‘ Rolle dann erstellen und jeder Teilort Admin-Benutzer dieser Rolle zuweisen, aber sehr vorsichtig sie einen ‚Standort‘ Profileintrag zuweisen, die den Wert hat, der auf der Website entspricht, die für sie Admin.

Zum Beispiel: ‚user123‘ würde die Rolle ‚Siteadmin‘ zugeordnet werden und ihr ‚Standort‘ Profil Attribut könnte ‚subsitexyz‘. Sie würden dann als Administrator für die Site identifiziert werden.

Die obige praktikabel ist, aber wenn Sie wirklich wollen, das so glatt wie möglich machen, erstellen Sie Ihre eigenen MembershipProvider (SubsiteMembershipProvider) und erstellen Sie eine neue SubsiteMembershipUser Klasse , die von MembershipUser erbt, dass Ihr neuer Anbieter zurückgibt. Sie könnten dann Ihre eigenen Eigenschaften hinzufügen SubsiteMembershipUser, dass Ihre App, um herauszufinden, abfragen können, welche Seite der Benutzer gehört:

//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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top