Este artículo presenta el método de seguridad de primavera para controlar la autorización y lo comparte con usted, como sigue:
Use el método de autorización para configurar la autorización
Cada expresión de autorización de control de seguridad de Spring (en adelante, denominada expresión) en realidad corresponde a un método de autorización en la API, que es el método de procesamiento cuando se configuran los permisos de URL solicitados. Por ejemplo:
@Overrideprotected void configure (httpsecurity http) lanza la excepción {http.authorizerequests () .antmatchers (httpmethod.delete, "/user/*").hasrole("admin") .antmatchers ("/index"). Permitall () .antMatchers ("/pay"). Hasanyrole ("we_chat_pay", "ali_pay") .antMatchers ("/debug"). Hasipaddress ("192.168.1.0/24");}Utilice expresiones de autorización para autorizar solicitudes de múltiples permisos
Entonces, ¿cuándo necesita usar expresiones para el procesamiento de autorización? Los requisitos de permiso de una aplicación de seguridad son a menudo complejos y diversos. Por ejemplo, la solicitud de depuración de un proyecto espera que el visitante tenga los derechos de administrador y debe acceder a ella a través de la LAN interna de la empresa. Según tales requisitos, los métodos proporcionados por la API de seguridad no se pueden cumplir solo porque estos métodos de autorización no pueden llamarse continuamente.
Puede usar expresiones de autorización para resolver este problema:
@OverrideProtected Void Configure (httpsecurity http) lanza la excepción {http.authorizequests () .antmatchers ("/debug") .access ("Hasrole ('admin') y HasipAddress ('192.168.1.0/24'));}Ejemplo de expresión de autorización
| expresión | ilustrar |
|---|---|
| permiso | Regresa verdadero para siempre |
| negar | Regresar falso para siempre |
| anónico | Si el usuario actual es un usuario anónimo, devuelva verdadero |
| Acuérdate de mí | Si el usuario actual es recordatorio, devuelve verdadero |
| autenticado | Si el usuario actual no es un usuario anónimo (autenticado), devuelva verdadero |
| fullautenticado | Devuelve verdadero si el usuario actual no es anónimo ni usuario de recuerdo |
| Hasrole (rol) | Si tiene los permisos de rol especificados en la recopilación actual de permisos de usuario (al coincidir, se agregará 'rol_' antes de los permisos que especificó, es decir, si determina si hay permiso "rol_role"), devuelve verdadero. |
| Hasanyrole (rol1, rol2, ...) | Devolver verdadero si tiene algún permiso de roles en la colección actual de permisos de usuario |
| HASAUTHORITY (AUTORIDAD) | Devuelve verdadero si los permisos de usuario actuales tienen autoridad (coincidan si hay permiso de "autoridad") en la colección actual de permisos de usuario. |
| Hasanyautoridad (autoridad) | Devolver verdadero si tiene algún permiso en la colección actual de permisos de usuario |
| Hasipaddress ("192.168.1.0/24") | Fanhui verdadero al enviar la coincidencia de IP solicitada |
RBAC de control de acceso basado en roles (control de acceso basado en roles)
Quizás piense que el método anterior puede cumplir con la gestión de autorización de seguridad de la mayoría de las aplicaciones. Sin embargo, de hecho, la autorización de aplicaciones de nivel empresarial a menudo se basa en cambios dinámicos en los datos de la base de datos. Si el empalme de cadenas se usa anteriormente, no solo será extremadamente hostil para los desarrolladores (cada cambio en el personal significa que el código debe cambiarse, lo cual obviamente no es razonable), sino que el rendimiento de la aplicación también se reducirá en consecuencia. Entonces, ¿cómo resolverlo?
Modelo de datos
Un modelo general de datos RBAC generalmente requiere cinco tablas (tres tablas de entidad y dos tablas de relación). Las tres tablas de entidad incluyen tabla de usuario, tabla de roles y tabla de recursos. Las dos tablas de relación incluyen. La relación entre ellos es la siguiente:
Modelo de datos RBAC
Tabla de usuario
Cualquier usuario debe tener una tabla de usuario. Cuando una empresa cambia al personal, el personal de negocios (como los recursos humanos) agregará y eliminará la tabla de datos.
Lista de roles
¿Qué identidades tienen la empresa, como el presidente, vicepresidente, gerente de departamento, etc., y hay personal de negocios que operan los datos sobre la tabla en función de la situación específica de la empresa?
Lista de recursos
Almacenar recursos que requieren control de permiso. Dado que realmente usamos URL cuando usamos la autorización de control, el personal de negocios no organiza las entradas de datos de acuerdo con las URL, sino que operamos en forma de interfaz de vista. Entonces, en esta tabla, los menús y los botones presentados al personal de negocios y las URL que están controladas por los permisos.
Tabla de relación de rol de usuario
Existe una relación de muchos a muchos entre la tabla de usuario y la tabla de roles (ID de usuario e ID de roles). Un usuario puede ser roles múltiples (un usuario puede ser tanto un administrador de departamento como un administrador), mientras que un rol a menudo corresponde a múltiples usuarios.
Tabla de relación de recursos de roles
La tabla de roles y la tabla de recursos () también son una relación de muchos a muchos. Un rol puede acceder a múltiples recursos (botones u menús, etc.), y también se puede acceder a un recurso mediante múltiples roles.
Spring Security también admite expresiones personalizadas para hacer el trabajo, como este
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.