Red de conocimiento informático - Computadora portátil - Acegi(xii): ¿Qué tiene de interesante el anónimoProcessingFilter? ¿Qué beneficios puede aportarnos? Para resolver este problema, leímos la documentación de Acegi, pero para ser honesto, debido a que la documentación usa palabras como "conveniente" y "hermoso" para describir los beneficios de este filtro, todavía no lo siento. Aquí hay un resumen de las razones que se me ocurren ahora mismo. Perfecto en teoría. Con este filtro, es posible agregar permisos para todos los enlaces en el sistema y también agregar autenticación anónima predeterminada para "acceso no rutinario", como inicio de sesión, cierre de sesión y página de inicio. Este "acceso no convencional" se puede escribir desde el archivo de configuración de acegi; por supuesto, escribir también tiene desventajas. De esta deficiencia, vemos la siguiente razón. Configuraciones dinámicas para enlaces. Puede suceder que inicialmente se acceda a un enlace mediante permisos específicos, pero debido a cambios en la lógica empresarial, los permisos del enlace se vuelven anónimos o el acceso anónimo original se convierte en permisos específicos. En este punto, para establecer permisos sin reiniciar el servidor, preconfiguramos anonymProcessingFilter para manejar estas situaciones predeterminadas. No puedo adivinar el resto ahora, espero que puedas recuperarlo. 2. ¿Cómo configurar? No lo entiendo del todo, pero requiere configuración. ¿Cómo configurarlo? Echemos un vistazo a las tres clases involucradas en este filtro: AnonymousProcessingFilter, AnonymousAuthenticationToken y AnonymousAuthenticationProvider. No hay mucho que decir sobre la primera clase, es la clase de implementación de este filtro y no se puede prescindir de ella. No hay mucho que decir sobre la primera clase, es la clase de implementación del filtro y no se puede hacer nada sin ella. La segunda clase es en realidad una autenticación mediante la cual se puede agregar una autenticación anónima predeterminada. La tercera clase implementa la interfaz AuthenticationProvider. Con la autenticación anónima, debe proporcionar un proveedor para filtrar en filterInvocationInterterface. Si se utiliza autenticación anónima, se debe proporcionar un proveedor correspondiente para que filterInvocationInterceptor "se atasque" al verificar los permisos. Jaja, cuando vi esto, pensé que era bastante interesante: algo con una cabeza en sí, para poder "cubrirlo" y que pueda funcionar en el mundo real, tengo que conseguir dos cosas más con la misma cabeza. Después de una comprensión general, echemos un vistazo a la configuración: 2.1 Configure el frijol de filtro de proceso anónimo. Anónimo en userAttribute corresponde al principal de Autenticación (AnonymousAuthenticationToken también es un tipo de Autenticación, aunque algunos son falsos), y ROLE_ANONYMOUS corresponde a GrantyMOUS en Autenticación. En la autenticación GrantedAuthority [], la clave anónima es generada por keyHash en AnonymousAuthenticationToken (obtenido a través del método hashCode en la clase String). La siguiente configuración para el proveedor de autenticación anónima corresponde a 2.AuthenticationProvider en la línea correspondiente.

Acegi(xii): ¿Qué tiene de interesante el anónimoProcessingFilter? ¿Qué beneficios puede aportarnos? Para resolver este problema, leímos la documentación de Acegi, pero para ser honesto, debido a que la documentación usa palabras como "conveniente" y "hermoso" para describir los beneficios de este filtro, todavía no lo siento. Aquí hay un resumen de las razones que se me ocurren ahora mismo. Perfecto en teoría. Con este filtro, es posible agregar permisos para todos los enlaces en el sistema y también agregar autenticación anónima predeterminada para "acceso no rutinario", como inicio de sesión, cierre de sesión y página de inicio. Este "acceso no convencional" se puede escribir desde el archivo de configuración de acegi; por supuesto, escribir también tiene desventajas. De esta deficiencia, vemos la siguiente razón. Configuraciones dinámicas para enlaces. Puede suceder que inicialmente se acceda a un enlace mediante permisos específicos, pero debido a cambios en la lógica empresarial, los permisos del enlace se vuelven anónimos o el acceso anónimo original se convierte en permisos específicos. En este punto, para establecer permisos sin reiniciar el servidor, preconfiguramos anonymProcessingFilter para manejar estas situaciones predeterminadas. No puedo adivinar el resto ahora, espero que puedas recuperarlo. 2. ¿Cómo configurar? No lo entiendo del todo, pero requiere configuración. ¿Cómo configurarlo? Echemos un vistazo a las tres clases involucradas en este filtro: AnonymousProcessingFilter, AnonymousAuthenticationToken y AnonymousAuthenticationProvider. No hay mucho que decir sobre la primera clase, es la clase de implementación de este filtro y no se puede prescindir de ella. No hay mucho que decir sobre la primera clase, es la clase de implementación del filtro y no se puede hacer nada sin ella. La segunda clase es en realidad una autenticación mediante la cual se puede agregar una autenticación anónima predeterminada. La tercera clase implementa la interfaz AuthenticationProvider. Con la autenticación anónima, debe proporcionar un proveedor para filtrar en filterInvocationInterterface. Si se utiliza autenticación anónima, se debe proporcionar un proveedor correspondiente para que filterInvocationInterceptor "se atasque" al verificar los permisos. Jaja, cuando vi esto, pensé que era bastante interesante: algo con una cabeza en sí, para poder "cubrirlo" y que pueda funcionar en el mundo real, tengo que conseguir dos cosas más con la misma cabeza. Después de una comprensión general, echemos un vistazo a la configuración: 2.1 Configure el frijol de filtro de proceso anónimo. Anónimo en userAttribute corresponde al principal de Autenticación (AnonymousAuthenticationToken también es un tipo de Autenticación, aunque algunos son falsos), y ROLE_ANONYMOUS corresponde a GrantyMOUS en Autenticación. En la autenticación GrantedAuthority [], la clave anónima es generada por keyHash en AnonymousAuthenticationToken (obtenido a través del método hashCode en la clase String). La siguiente configuración para el proveedor de autenticación anónima corresponde a 2.AuthenticationProvider en la línea correspondiente.

2. Una vez configurado el código para configurar unlimitedAuthenticationProviderXml, configure protectedAuthenticationProvider para los proveedores en la clase ProviderManager, de modo que filterInvocationInterceptor encuentre la autenticación anónima previamente configurada para que AccessDecisionVoter pueda "votar". El anónimoProcessingFilter anterior es el mismo; de lo contrario, no habrá "palabras de código" en la "votación". Una suposición: la clave aquí debe ser la misma que la clave del filtro de procesamiento de anonimización anterior; de lo contrario, al "votar", sin el "código secreto", los "propietarios" no se reconocerán entre sí. Para verificar esta suposición, leí la documentación y encontré esta frase: "La clave se comparte entre el filtro y el proveedor de autenticación, por lo que el segundo acepta los tokens creados por el primero". ¡Buena suposición! Con el análisis de configuración anterior, el mecanismo operativo se puede entender simplemente mirando el código fuente, por lo que no es necesario escribir más aquí. ---------------------------------------- Encontré este párrafo mientras leía el documento y pensé Vale la pena escribir esto, aunque todavía no lo he experimentado personalmente: al final de la discusión sobre autenticación anónima, está la interfaz AuthenticationTrustResolver y su correspondiente implementación AuthenticationTrustResolverImpl. Esta interfaz proporciona un método isAnonymous(Authentication) que permite a las clases interesadas tener en cuenta este tipo especial de estado de autenticación. ExceptionTranslationFilter utiliza esta interfaz cuando maneja AccessDeniedException. Si se genera una AccessDeniedException y la autenticación es de tipo anónimo, el filtro no genera una respuesta 403 (Prohibida), sino que inicia un AuthenticationEntryPoint para que el principal pueda autenticarse correctamente. Esta es una distinción necesaria; de lo contrario, el principal siempre se considerará "autenticado" y nunca tendrá la oportunidad de iniciar sesión mediante formularios, mecanismos básicos, de resumen u otros mecanismos de autenticación normales.