Frage

Ich habe erst vor kurzem begonnen mit dem MVC-Ansatz arbeiten, so dass ich nehme an, dies ist eine einfache für Sie Gurus hier:

Wo finde ich Zugriffskontrolle setzen?

  1. In einer Ansicht? Ich will nicht in meinen Vorlagen jede Logik neben Schaltern und Fahnen haben, so dass klingt wie die am wenigsten gangbare Weg
  2. Im Modell? Sollte jedes Business-Objekt entscheiden, welche Daten sie über sich selbst basierend auf aufdeckt, wer fragt?
  3. In der Steuerung? Das ist, wo ich es jetzt habe, aber es macht es schwer, Geschäftsregeln in Einklang zu halten

Oder gibt es eine andere Möglichkeit?

War es hilfreich?

Lösung

Dies wird davon abhängen, welche Rahmen Sie wie verwenden und die Sprache wird eine Menge der Werkzeuge diktieren Sie zur Verfügung haben.

Von einem hohen Niveau, sollten Sie Zugriffssicherheit bei Points-of-Entry konfiguriert haben. Und Sie sollten überprüfen Sie Zugriffssicherheit auf allen Ebenen, die aus mehreren Teilen Ihrer Anwendung autonom oder wiederverwendet betrachtet werden könnte (wer weiß, ob die Sicherheit von Ihrem Mitarbeiter des Portals überprüft wurde, dass Ihre Logik-Schicht verwendet? Etc.). Das andere, was zu befürchten ist Datensicherheit, und das gehört so nah an Ihre Daten wie möglich (ja, ja zu Ihrem # 2 oben, aber verstehen, dass es separat).

Dies ist auf die Differenz zwischen Anwendungslogik und Domain-Logik verwendet, die ich darüber zu reden gern bin. Wenn es eine Logik, die auf eine bestimmten Anwendung (Web-App im Vergleich zu einem Windows-Dienst, oder was auch immer) spezifisch ist, dann, dass die Logik sollte nur in dieser Anwendung definiert werden. Wenn eine gewisse Logik, die Grenze zwischen Anwendungen kreuzt (wiederverwendbar ist zwischen Anwendungen), dann qualifiziert sie sich als Domain-Logik und sollte in Ihrem Modell definiert werden. Ihre Anwendungen können die Verwendung von Domain-Logik, aber sie sollten es nicht besitzen.

Andere Tipps

Für Modell (auch bekannt als Daten) Sicherheit, würde das Modell „Kontrolle“ der Zugriff und die Steuerung würde „erleichtern“, um den Zugang. Dies ermöglicht die Wiederverwendung des Modells unabhängig von der Steuerung und minimiert, wenn nicht die allgemeine Code-Replikation notwendig, über unähnlich Controller negiert, die das Modell verwenden.

Zum Beispiel ein Auto, ein Fahrer und ein Key. (Model, Controller, API bezeichnet). Aufgrund einer sehr kleinen Schnittstelle (key == API), verweigert So ermöglicht das Modell oder Controller-Zugriff per API (Schlüsselanhänger). Verschiedene Arten von Zugang erlaubt (Valet Schlüssel, Owner Key, Owner FOB). Unter Verwendung der Dienerschlüssel-Schnittstelle, hat der Controller keinen Zugriff auf einen Teil der Daten / Funktion des Modells, wie beispielsweise im Handschuhfach, der Kofferraum und der Gastank. Dies wird im Wesentlichen rollenbasierten Zugriff implementiert durch das Modell durch die Identifizierung und Kategorisierung des Controllers mit einer sehr kleinen API / Befehl Oberfläche.

Das bedeutet, dass das Modell kann durch andere Steuerungen (Auto mit verschiedenen Treibern) verwendet werden, die nur die Grund Authentifizierung benötigen, um die Daten des Modells (Funktionen und Abteilen des Autos) zuzugreifen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top