Integração SpringBoot Shiro thymeleaf conceito _01_Shiro

Introdução Shiro e descrição da função

Shiro é uma estrutura de segurança para Java. Atualmente, mais e mais pessoas usam o Apache Shiro porque é bastante simples: comparado com o Spring Security, ele pode não ser tão poderoso quanto o Spring Security, mas pode não precisar de coisas tão complicadas no trabalho real, portanto, use o Shiro pequeno e simples É o suficiente.
Insira a descrição da imagem aqui

Autenticação: autenticação / login, verifique se o usuário tem a identidade apropriada não é,
a autorização: Autorização de que a competência para verificar, verificar se um utilizador autenticado um privilégio; que é julgado por
se ou não os usuários podem fazer coisas, como comum: Verifique se um usuário tem uma função. Ou com um grão fino verificar
se um usuário permissões para um recurso;
o Session Manager: Gerenciamento de sessão, isto é, após o usuário fizer logon em uma única sessão, na ausência de saída, é tudo acreditava
as informações na sessão; a lata sessão É um ambiente JavaSE comum ou pode ser um ambiente da Web;
Criptografia: criptografia para proteger a segurança dos dados, como criptografia de senha armazenada no banco de dados em vez de armazenamento de texto sem formatação;
Suporte da Web: Suporte da Web, pode ser facilmente integrado ao ambiente da Web ;
Armazenamento em cache: o armazenamento em cache, por exemplo, depois que um usuário faz login, suas informações e funções / permissões do usuário não precisam ser verificadas todas as vezes, o que pode melhorar a eficiência;
Concorrência: shiro suporta a verificação simultânea de aplicativos multithread, ou seja, se você abrir outro em um thread Thread, que pode
propagar automaticamente permissões;
Teste: Fornecer suporte ao teste;
Executar como: permite que um usuário finja ser a identidade de outro usuário (se permitir);
Lembre-se de mim: Lembre-se de mim, essa é uma função muito comum, isto é, após o primeiro login, então não voltar na próxima vez LOGIN
lembrar que O Shiro não mantém usuários e mantém permissões; elas precisam ser projetadas / fornecidas por nós mesmos e
injetadas no Shiro através da interface correspondente.

Shiro realização princípio compreensão

Insira a descrição da imagem aqui
Em outras palavras, para nós, o aplicativo Shiro mais simples: o
código do aplicativo é autenticado e autorizado pelo Assunto, e o Assunto é confiado ao SecurityManager; precisamos injetar Realm no SecurityManager do Shiro, para que o SecurityManager possa obter
usuários legítimos e A julgar pela sua autoridade.

O entendimento arquitetônico de Shiro

Insira a descrição da imagem aqui
Subject: Subject, você pode ver que o assunto pode ser qualquer "usuário" que possa interagir com o aplicativo;
SecurityManager: equivalente a DispatcherServlet no SpringMVC ou
FilterDispatcher no Struts2; é o coração do Shiro; todas as interações específicas são controladas pelo SecurityManager; Gerencia todos os assuntos e é responsável pela autenticação e autorização, além do gerenciamento de sessões e cache.
Authenticator: autenticador, responsável pela autenticação do sujeito, este é um ponto de extensão, se o usuário achar que o padrão do Shiro não é bom, você poderá personalizar a implementação; ele requer uma estratégia de autenticação (Authentication Strategy), ou seja, em que circunstâncias a autenticação do usuário é aprovada;
Authrizer : O autorizador ou controlador de acesso é usado para determinar se o sujeito tem permissão para executar a operação correspondente; ou seja, para controlar quais funções do aplicativo o usuário pode acessar;
Domínio: pode haver um ou mais Domínios, que podem ser considerados dados de entidade seguros Origem, que é usada para obter a entidade de segurança; pode ser JDBC, LDAP ou memória, etc.; fornecida pelo usuário; Nota: Shiro não sabe onde seus usuários / permissões estão armazenados e em que formato ; Geralmente, precisamos implementar nosso próprio território no aplicativo;
SessionManager: se você escreveu um Servlet, deve conhecer o conceito de Session. A sessão precisa de alguém para gerenciar seu ciclo de vida. Este componente é o SessionManager; o Shiro pode ser usado não apenas no ambiente da Web, mas também no ambiente JavaSE comum, EJB e outros ambientes; tudo isso, o Shiro abstrai uma sessão para gerenciar os dados entre o corpo principal e o aplicativo; nesse caso, por exemplo, usamos em um ambiente da Web, era originalmente um servidor da Web; depois veio ao EJB Servidor; neste momento, quero colocar os dados da sessão dos dois servidores em um só lugar. Nesse
momento, posso implementar minha própria sessão distribuída (como colocar os dados no servidor Memcached);
SessionDAO: DAO que todos os usuários usaram, objetos de acesso a dados, usam Para a sessão CRUD, por exemplo, se queremos salvar a sessão no banco de dados, podemos implementar nosso próprio SessionDAO, como o JDBC para gravar no banco de dados; por exemplo, se você deseja colocar a Sessão no Memcached, pode implementar seu próprio Memcached SessionDAO; além disso, você pode usar o Cache Cache para melhorar o desempenho;
CacheMa nager: cache controller, para gerenciar caches como usuários, funções, permissões, etc; porque esses dados
raramente são alterados basicamente , eles podem melhorar o desempenho do acesso depois de serem colocados no
cache.Criptografia: módulo criptográfico, o Shiro melhorou alguns Componentes de criptografia são usados, como criptografia de senha

fluxo da função de autenticação shiro (autenticação)

Fluxograma:
Insira a descrição da imagem aqui

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

Geralmente herda AuthorizingRealm (autorização); herda AuthenticatingRealm (ou seja, autenticação) e também indiretamente herda CachingRealm (com implementação de cache), reescrevendo os métodos de autenticação AuthenticationInfo e doGetAuthorizationInfo.

regras do interceptador shiro

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

Publicado 979 artigos originais · Gostei 153 · Visite 260.000+

Acho que você gosta

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