2011-01-19 17 views
6

Estoy haciendo un proyecto en WPF. Obtuve el requisito de autenticar a un usuario y proporcionar accesibilidad para los módulos en función del rol. ¿Tengo una mejor manera de lograr esto en WPF?Autenticación y roles en WPF

Respuesta

2

Dependerá, en parte, de la seguridad que necesita que tenga el código.

Para todos sus casos de uso, utilice un patrón Model-View-ViewModel. En cada ViewModel, quizás mejor ubicado en una clase base para todas sus clases de ViewModel, incluya una variable de estado que devuelve una cadena y aumenta el evento PropertyChanged siempre que cambie el estado de seguridad.

Base su presentación para cada clase Ver en el valor de esa cadena, siguiendo un patrón similar a la respuesta aceptada a esta cuestión de forma:

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

La respuesta describe cómo hacer esto con valores booleanos , pero puede usar cualquier valor de cadena que no sea "Verdadero" o "Falso" si su variable de estado ViewModel necesita más de dos estados.

Todos los códigos .NET, incluido WPF, se pueden modificar mediante ingeniería inversa. Si su código necesita ser más seguro que eso, es decir, si su caso de uso supone que sus usuarios piratearán su programa WPF, entonces querrá ofuscar y/o cifrar gran parte del código de ViewModel, utilizando productos disponibles comercialmente como InishTech's SLPS o Dotfuscator o lo que sea.

Como alternativa, podría usar el mismo patrón de MVVM y escribir una aplicación de Silverlight, pero no estoy seguro de si un usuario de Silverlight tiene acceso a los archivos binarios de la misma forma que lo haría un usuario de WPF de escritorio.

+0

Solo quiero cambiar la visibilidad de ciertas opciones en la interfaz de usuario. – Novice

+0

Entonces debería estar bien con un enfoque casi idéntico al de la pregunta vinculada: definirá un estilo para cada estado de visualización y aplicará el estilo con un DataTrigger vinculado al booleano de ViewModel, quizás denominado "Authenticated". Puede poner el código de verificación real en el getter de ViewModel para esa propiedad "Autenticada". –

Cuestiones relacionadas