2012-04-12 9 views
1

Ich muss Berechtigungen implementieren. Es muss möglich sein, Kontrollen und Formulare (in) visibele basierend auf den Berechtigungen eines Benutzers zu machen.Was ist eine gute Möglichkeit, Steuerelemente zum Festlegen von Berechtigungen zu identifizieren?

Also, ich brauche eine Möglichkeit, die Steuerelemente zu identifizieren, um die Berechtigungen für festzulegen. Die Anwendung ist ziemlich groß und wächst immer noch. Die Art, wie ich Berechtigungen erstelle, muss flexibel sein.

Ich habe darüber nachgedacht, den Steuerelementen einen vollständigen Namen zu geben, wie zum Beispiel: namespace.formName.nameOfControl. Aber ich mag das nicht, weil es zu zerbrechlich ist. Wenn sich der Name (Leerzeichen) ändert, muss ich auch die Identität ändern, ich will das nicht, die Zufalls-Kollegen und ich vergessen zu aktualisieren, das ist zu groß.

Also meine Frage ist, was denken Sie, ist ein guter Weg, um die Kontrollen zu identifizieren? Es gibt einen Back-Office für ein Administrator die Berechtigungen festlegen

Antwort

0

ich recomment würde, dass alle aviable Kontrollen eine definierte Schnittstelle wie „IAccessControled“ implementieren muss, dort können Sie einen „PermissionKey“ definieren

Da dieser Name gehört zu die Schnittstelle ist es von anderen Eigenschaften die Kontrollen haben (explizit zB Schnittstellen-Implementierung) independend

dann können Sie scannen durch alle IAccessControled Controles

+0

Wie die Idee, aber das bedeutet, dass ich jede Steuerklasse I wickeln müssen möchte Berechtigungen festlegen. Wenn ich also eine Berechtigung für ein Button-Steuerelement festlegen muss, muss ich die Button-Klasse umbrechen. – Martijn

+0

Du brauchst deine eigene Klasse, abgeleitet von buttm, richtig. Aber das scheint in Ordnung zu sein. Denn wie sonst hätten Sie definiert, was erlaubt ist, Berechtigungen zu erhalten? Und wie sollen sie bewertet werden? Eine Erlaubnis zu haben oder nicht, endet in irgendeiner Geschäftslogik, die abhängig von der Kontrolle variieren kann. Im einfachsten Fall müssen Sie nur den Getter einer Eigenschaft implementieren, die eine Zeichenfolge zurückgibt. –

+0

Das ist meine Frage :) Ich finde es schwierig zu bestimmen, wie man ein Steuerelement identifiziert. – Martijn

0

Boas Enkler Antwort ist eine gute Möglichkeit, Berechtigungen, um Dinge wie Befehl oder einen Benutzer festlegen Erstellt Klasse. Wie Sie jedoch bereits erwähnt haben, würde es erforderlich sein, alle Basissteuerelemente zu verpacken, um ihre Berechtigungen zu verwalten.

Der Ansatz, den ich empfehlen würde, ist ein benutzerdefiniertes Steuerelement zu erstellen, das die IExtenderProvider implementiert. Mit der IExtenderProvider können Sie einfach Custom Propreties zu den Steuerelementen im Formular hinzufügen. Sie können also eine Property "PermissionRequired" hinzufügen, die Sie beim Entwerfen von WinForm festlegen können.

Ich habe nicht in der Lage gewesen, einige Tutorial zu finden, die mir wirklich gefällt, aber das ist bestes, die ich gefunden habe noch: .NET IExtenderProvider (C#)

Verwandte Themen