Pregunta

Tengo una aplicación que necesita acceder a ActiveDirectory para obtener permisos / roles de usuario en el inicio de la aplicación y persistir en todo momento.

No quiero presionar AD en cada formulario para volver a verificar los permisos del usuario, por lo que me gustaría que la función del usuario y posiblemente otros datos sobre el usuario conectado estén disponibles globalmente en cualquier formulario dentro de la aplicación, por lo que Puedo ocultar correctamente la funcionalidad, botones, etc. donde sea necesario.

Algo así como:

if (UserProperties.Role == Roles.Admin)
{
    btnDelete.Visible = false;
}

¿Cuáles son las mejores prácticas para almacenar datos de usuario estáticos en una aplicación de Windows? Las soluciones como Singleton o variables globales pueden funcionar, pero estaba tratando de evitarlas.

¿Es igual de malo un objeto Usuario que se pasa al constructor de cada formulario?

¿Fue útil?

Solución

Establezca Thread.CurrentPrincipal con ya sea WindowsPrincipal , a GenericPrincipal o su principal personalizado. Luego, puede llamar a IsInRole :

if (Thread.CurrentPrincipal.IsInRole(Roles.Admin)) {
   btnDelete.Visible = false;
}

Otros consejos

Tal vez mi uso frecuente de JavaScript nubla mi juicio, pero creo que si tiene algo que significa ser global, entonces usar variables globales está bien.

Global es malo cuando expones cosas globalmente que no deberían serlo. Global está bien si es semánticamente correcto para el uso previsto de los datos.

Puede usar el proveedor de perfiles de asp.net en su aplicación de Windows. Compruébelo @ http://fredrik.nsquared2.com/viewpost.aspx? PostID = 244 & amp; showfeedback = true

Espero que ayude, Bruno Figueiredo http://www.brunofigueiredo.com

Los datos estáticos (o un singleton) parecen estar bien para esto si desea ampliar los datos a la instancia de la aplicación (o AppDomain).

Sin embargo, dado que está hablando sobre el almacenamiento en caché de las credenciales de seguridad de un usuario, es posible que desee pensar cuidadosamente sobre las lagunas de seguridad. Por ejemplo, ¿qué sucede si el usuario deja la aplicación ejecutándose durante días? Podrían estar realizando operaciones con sus credenciales de días anteriores en lugar de sus credenciales más actuales. Dependiendo de lo que esté asegurando, es mejor que verifique las credenciales a pedido o al menos caduque las credenciales almacenadas en caché periódicamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top