Integración SpringBoot Shiro thymeleaf _01_Shiro concept

Introducción a Shiro y descripción de la función

Shiro es un marco de seguridad para Java. En la actualidad, cada vez más personas usan Apache Shiro porque es bastante simple: en comparación con Spring Security, puede que no sea tan poderoso como Spring Security, pero puede que no necesite cosas tan complicadas en el trabajo real, así que use Shiro pequeño y simple. Es suficiente
Inserte la descripción de la imagen aquí

Autenticación: la autenticación / login, verificar que el usuario tiene la identidad apropiada no es;
la Autorización: Autorización que la competencia para verificar, verificar que un usuario se ha autenticado un privilegio, que es juzgado por
si los usuarios pueden hacer cosas, como común: Verifique que un usuario tenga un rol. O con un grano fino verificar
si un usuario permisos a un recurso;
el Administrador de sesión: Gestión de sesiones, es decir, después de que el usuario entre una sesión, en ausencia de la salida, todo está creyeron
la información de la sesión, la sesión puede Es un entorno JavaSE común, o puede ser un entorno web;
Criptografía: cifrado para proteger la seguridad de los datos, como el cifrado de contraseña almacenado en la base de datos en lugar del almacenamiento de texto sin formato;
Soporte web: soporte web, puede integrarse fácilmente en el entorno web ;
Almacenamiento en caché: el almacenamiento en caché, por ejemplo, después de que un usuario inicia sesión, su información de usuario y roles / permisos no tienen que verificarse cada vez, lo que puede mejorar la eficiencia;
Concurrencia: shiro admite la verificación concurrente de aplicaciones de subprocesos múltiples, es decir, si abre otro en un hilo Subproceso, que puede
propagar automáticamente los permisos;
Pruebas: proporcionar soporte de prueba;
Ejecutar como: Permitir que un usuario finja ser la identidad de otro usuario (si lo permiten);
Recordarme: Recordarme, esta es una función muy común, Es decir, después de iniciar sesión una vez, no necesita iniciar sesión si vuelve la próxima vez.
Recuerde, Shiro no mantendrá usuarios y permisos; estos deben ser diseñados / proporcionados por nosotros mismos y luego
inyectados en Shiro a través de la interfaz correspondiente.

Shiro realización principio comprensión

Inserte la descripción de la imagen aquí
En otras palabras, para nosotros, la aplicación Shiro más simple: el
código de la aplicación está autenticado y autorizado por el Sujeto, y el Sujeto se confía a SecurityManager; necesitamos inyectar Realm en el SecurityManager de Shiro, para que SecurityManager pueda obtener
usuarios legítimos y A juzgar por su autoridad.

Comprensión arquitectónica de Shiro

Inserte la descripción de la imagen aquí
Asunto: Asunto, puede ver que el sujeto puede ser cualquier "usuario" que pueda interactuar con la aplicación;
SecurityManager: equivalente a DispatcherServlet en SpringMVC o
FilterDispatcher en Struts2 ; es el corazón de Shiro; todas las interacciones específicas se controlan a través del SecurityManager; Gestiona todos los temas y es responsable de la autenticación y autorización, así como de la gestión de sesiones y caché.
Autenticador: autenticador, responsable de la autenticación del sujeto, este es un punto de extensión, si el usuario considera que el valor predeterminado de Shiro no es bueno, puede personalizar la implementación; requiere una estrategia de autenticación (Estrategia de autenticación), es decir, en qué circunstancias se pasa la autenticación del usuario;
Authrizer : Autorizador, o controlador de acceso, se utiliza para determinar si el sujeto tiene permiso para realizar la operación correspondiente; es decir, para controlar qué funciones de la aplicación puede acceder el usuario;
Reino: puede haber uno o más dominios, que pueden considerarse como datos de entidad seguros Fuente, que se utiliza para obtener la entidad de seguridad; puede ser JDBC, LDAP o memoria, etc.; proporcionada por el usuario; Nota: Shiro no sabe dónde están almacenados sus usuarios / permisos y en qué formato ; Por lo tanto, generalmente necesitamos implementar nuestro propio Reino en la aplicación;
SessionManager: si ha escrito un Servlet, debe conocer el concepto de Session. Session necesita a alguien para administrar su ciclo de vida. Este componente es SessionManager; y Shiro puede usarse no solo en el entorno web, sino también en el entorno JavaSE ordinario, EJB y otros entornos; todo esto, Shiro abstrae una sesión para administrar los datos entre el cuerpo principal y la aplicación; en este caso, por ejemplo, lo usamos en un entorno web, originalmente era un servidor web; luego vino al EJB Servidor; En este momento, quiero poner los datos de sesión de los dos servidores en un solo lugar. En
este momento, puedo implementar mi propia sesión distribuida (como poner los datos en el servidor Memcached);
SesiónDAO: DAO que todos han usado, objetos de acceso a datos, uso Para la sesión CRUD, por ejemplo, si queremos guardar la sesión en la base de datos, entonces podemos implementar nuestro propio SessionDAO, como JDBC para escribir en la base de datos; por ejemplo, si desea poner la sesión en Memcached, puede implementar su propio Memcached SessionDAO; además, puede usar Cache en SessionDAO Caché para mejorar el rendimiento;
CacheMa nager: controlador de caché, para administrar cachés como usuarios, roles, permisos, etc., ya que estos datos
rara vez se cambian básicamente , pueden mejorar el rendimiento del acceso después de ser almacenados en la caché.
Criptografía: módulo criptográfico, Shiro ha mejorado algunos aspectos comunes Se utilizan componentes de cifrado, como el cifrado de contraseña

flujo de la función de autenticación de shiro (autenticación)

Diagrama de flujo:
Inserte la descripción de la imagen aquí

1、UsernamePasswordToken 实现HostAuthenticationToken和RemeberAuthenticationToken,HostAuthenticationToken实现AuthenticationToken
2、首先调用 Subject.login(token)进行登录,其会自动委托给 Security Manager,调用之前必
须通过 SecurityUtils. setSecurityManager()设置;
3、SecurityManager 负责真正的身份验证逻辑;它会委托给 Authenticator 进行身份验证;SecurityManager j接口继承Authenticator、Authrizer、sessionManage接口
4、Authenticator 才是真正的身份验证者,Shiro API 中核心的身份认证入口点,此处可以自
定义插入自己的实现;
5、Authenticator 可能会委托给相应的 AuthenticationStrategy 进行多 Realm 身份验证,默认
ModularRealmAuthenticator 会调用 AuthenticationStrategy 进行多 Realm 身份验证;
6、Authenticator 会把相应的 token 传入 Realm,从 Realm 获取身份验证信息,如果没有返
回/抛出异常表示身份验证失败了。此处可以配置多个 Realm,将按照相应的顺序及策略进
行访问。

Reino

Generalmente hereda AuthorizingRealm (autorización); hereda AuthenticatingRealm (es decir, autenticación) y también indirectamente hereda CachingRealm (con implementación de caché), reescribiendo los métodos de autorización AuthenticationInfo y doGetAuthorizationInfo.

reglas del interceptor shiro

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

979 artículos originales publicados · Me gustaron 153 · Visitar 260,000+

Supongo que te gusta

Origin blog.csdn.net/weixin_40816738/article/details/105471577
Recomendado
Clasificación