2011-01-19 20 views
6

Sto facendo un progetto in WPF. Ho avuto l'obbligo di autenticare un utente e fornire accessibilità per i moduli in base al ruolo. Ho un modo migliore per ottenere questo in WPF.Autenticazione e ruoli in WPF

risposta

2

Dipenderà in parte da quanto è sicuro che il codice sia necessario.

Per tutti i casi di utilizzo, tuttavia, utilizzare un modello Model-View-ViewModel. In ogni ViewModel, forse nella migliore posizione in una classe base per tutte le classi ViewModel, include una variabile di stato che restituisce una stringa e solleva l'evento PropertyChanged ogni volta che cambia lo stato della sicurezza.

Base la presentazione per ciascuna classe View sul valore della stringa, seguendo uno schema simile a quello risposta accettata a questa domanda SO:

https://stackoverflow.com/questions/3868164/

La risposta descrive come fare questo con i valori booleani , ma puoi usare qualsiasi valore di stringa diverso da "True" o "False" se la tua variabile di stato ViewModel ha bisogno di più di due stati.

Tutti i codici .NET, incluso WPF, possono essere facilmente decodificati. Se il tuo codice deve essere più sicuro di quello, cioè se il tuo caso d'uso presuppone che i tuoi utenti modifichino il tuo programma WPF, allora vorrai offuscare e/o crittografare gran parte del codice ViewModel, usando prodotti disponibili in commercio come InishTech SLPS o Dotfuscator o qualsiasi altra cosa.

In alternativa, è possibile utilizzare lo stesso pattern MVVM e scrivere un'applicazione Silverlight, ma non sono sicuro che un utente Silverlight abbia accesso ai file binari come farebbe un utente WPF desktop.

+0

Voglio solo attivare la visibilità di determinate opzioni nell'interfaccia utente. – Novice

+0

Quindi si dovrebbe andare bene con un approccio quasi identico a quello nella domanda collegata: definirai uno stile per ogni stato di visualizzazione e applicherai lo stile con un DataTrigger associato al booleano ViewModel, forse chiamato "Autenticato". È possibile inserire il codice di verifica effettivo nel getter ViewModel per quella proprietà "Autenticata". –