DevExpress resuelve varios problemas de escenas en el desarrollo de la interfaz: cómo ocultar elementos de navegación según el usuario actual

DevExpress Technical Exchange Group 2: 775869749 Bienvenido a unirse a la discusión grupal

Descargar la versión completa de DevExpress v20.1 

DevExpress Universal Subscription tiene todos los controles de plataforma necesarios para el desarrollo de .NET, incluidos más de 600 controles de interfaz de usuario, plataforma de informes, marco DevExpress Dashboard eXpressApp, CodeRush para Visual Studio y una serie de herramientas auxiliares.

La galardonada plataforma de desarrollo de software DevExpress Universal lanzará su nueva v20.1 en 2020. La última versión tiene muchos productos nuevos y docenas de características de alto impacto. Puede proporcionar soluciones intuitivas para aplicaciones de escritorio, web y móviles y soluciones integrales. Varios escenarios de uso. ¿Quieres experimentar? Haga clic para descargar >>

Antecedentes del sistema

  • 平台 : Frameworks (XAF y XPO)
  • Producto: DeXpressApp Framework

Nuestro  Sistema de Seguridad  permite que ciertos usuarios oculten elementos de navegación configurando sus permisos de navegación, estos permisos se pueden configurar en dos modos.

A partir de la v16.2, se pueden asignar permisos de navegación a varios elementos de navegación. De forma predeterminada, esta función está habilitada en proyectos nuevos creados con el asistente. Para habilitarla cuando se actualiza desde una versión anterior, debe establecer la opción SecurityStrategy.SupportNavigationPermissionsForTypes en false. Si el proyecto está basado en Entity Framework, también es necesario actualizar la base de datos.

En v16.1 y versiones anteriores, los permisos de navegación se pueden asignar a tipos de objetos específicos a través de la opción AllowNavigate proporcionada en la configuración de permisos de tipo. Si el usuario actual no tiene permiso para navegar a este tipo, todos los elementos de navegación específicos del tipo correspondiente se eliminan del control de navegación. Al actualizar proyectos antiguos a v16.2 y posteriores, este modo está habilitado de forma predeterminada. Para habilitarlo en un nuevo proyecto creado con el asistente, abra el diseñador de aplicaciones y cambie el valor de la propiedad SecurityStrategy.SupportNavigationPermissionsForTypes a falso.

Este artículo demostrará cómo implementar manualmente el primer modo. Si la versión XAF utilizada por el proyecto aún no implementa la función de permiso de navegación, el método mostrado en este artículo es útil.

Nota : Si usa la solución proporcionada en este ejemplo y actualiza a la versión 16.2, este código puede dejar de funcionar correctamente. En este caso, utilice las sugerencias que se proporcionan al final de este artículo.

Si su versión XAF es inferior a 16.2 y necesita otorgar permisos para elementos de navegación individuales (por ejemplo, DashboardView o un modelo ListView específico), utilice las soluciones que se describen a continuación para ampliar la funcionalidad del sistema de seguridad. En este artículo, la propiedad HiddenNavigationItems le permite ocultar los elementos de navegación por su ID, que se agregará a la clase de función.

El método para anular el método ShowNavigationItemController.SynchItemWithSecurity que se muestra en este artículo también es aplicable a tareas que no están directamente relacionadas con el sistema de seguridad. Puede ocultar o personalizar cualquier elemento de navegación de esta manera.

Pasos de implementación:

  1. Implemente un tipo de permiso personalizado NavigationItemPermission, que se puede usar para verificar el permiso de acceso de un elemento de navegación específico a través de su ID.
  2. Implemente una solicitud de permiso personalizada: NavigationItemPermissionRequest: esta solicitud se enviará para verificar si el usuario actual tiene permiso para acceder a un determinado elemento de navegación.
  3. Implemente un procesador de solicitud de permiso personalizado NavigationItemPermissionRequestProcessor, que determinará si el usuario actual tiene permiso para la solicitud de permiso recibida.
  4. Utilice la propiedad HiddenNavigationItems para implementar roles personalizados. Utilice el método GetPermissions para ampliarlo y crear una instancia de NavigationPermission basada en el valor de la propiedad HiddenNavigationItems.
  5. Especifique un rol personalizado en el atributo RoleType del sistema de seguridad del diseñador de la aplicación.
  6. Al procesar el evento SecurityStrategy.CustomizeRequestProcessors en los archivos Program.cs y Global.asax.cs, el procesador de solicitud de permiso se registra en la aplicación.
  7. Implemente el descendiente de ShowNavigationItemController-CustomShowNavigationItemController y vuelva a escribir su método SynchroItemWithSecurity para deshabilitar los elementos de navegación prohibidos por la propiedad CustomSecurityRole.HiddenNavigationItems.

Después de realizar estos pasos en el proyecto, podrá asignar roles con propiedades HiddenNavigationItems a los usuarios deseados para restringir su acceso a ciertos elementos de navegación.

Nota: este artículo se basa en las clases PermissionPolicyRole y PermissionPolicyUser. Cuando se selecciona la política de permisos Permitir / Denegar en el asistente de solución, el sistema de seguridad usará estas clases. Si su proyecto se creó con una versión XAF anterior (versión anterior a la 16.1) y utilizó las clases SecuritySystemRole y SecuritySystemUser, cambie el número de versión en el cuadro combinado a continuación para ver ejemplos de estas clases.

Instrucciones de actualización para v16.2:

Después de actualizar a esta versión, el código utilizado en la versión anterior de este ejemplo puede dejar de funcionar. Para resolver este problema, copie el código relevante de la nueva versión del ejemplo o modifique la clase CustomShowNavigationItemController agregando el siguiente método:

C#

protegido override bool SyncItemsWithRequestSecurity (elementos DevExpress.ExpressApp.Actions.ChoiceActionItemCollection) { 
base.SyncItemsWithSecurity (elementos); 
devuelve verdadero; 
}

Visual Basic

Protegida SyncItemsWithRequestSecurity función se anulan (artículos ByVal como DevExpress.ExpressApp.Actions.ChoiceActionItemCollection) As Boolean 
MyBase.SyncItemsWithSecurity (artículos) 
devuelven True 
End Function

Obtenga una consulta de DevExpress de primera mano, ¡todo en el sitio web chino de DevExpress!

Supongo que te gusta

Origin blog.csdn.net/AABBbaby/article/details/108593191
Recomendado
Clasificación