Este artigo apresenta o método de segurança da primavera para controlar a autorização e o compartilha com você, como segue:
Use o método de autorização para configurar a autorização
Cada expressão de autorização de controle de segurança da primavera (a seguir denominada expressão) corresponde realmente a um método de autorização na API, que é o método de processamento quando as permissões de URL solicitadas são configuradas. Por exemplo:
@OverrideProtected void Configure (httpsecurity http) lança exceção {http.authorizerequests () .antmatchers (httpmethod.delete, "/user/*").hasrole("" .antmatchers ("/pay"). hasanyrole ("nós_chat_pay", "ali_pay") .antmatchers ("/debug"). hasipaddress ("192.168.1.0/24");}Use expressões de autorização para autorizar solicitações de várias permissões
Então, quando você precisa usar expressões para processamento de autorização? Os requisitos de permissão de um aplicativo de segurança geralmente são complexos e diversos. Por exemplo, a solicitação de depuração de um projeto espera que o visitante tenha direitos de administrador e deve acessá -lo através da LAN interna da empresa. Sob tais requisitos, os métodos fornecidos pela API de segurança não podem ser atendidos apenas porque esses métodos de autorização não podem ser chamados continuamente.
Você pode usar expressões de autorização para resolver este problema:
@OverrideProtected void Configure (httpsecurity http) lança exceção {http.authorizerequests () .antmatchers ("/debug") .access ("hasRole ('admin') e hasipaddress ('192.168.1.0/24');Exemplo de expressão de autorização
| expressão | ilustrar |
|---|---|
| Permitall | Retornar verdadeiro para sempre |
| Denyall | Retornar false para sempre |
| anônimo | Se o usuário atual for um usuário anônimo, retorne verdadeiro |
| lembre de mim | Se o usuário atual for lembre -se, retorne verdadeiro |
| autenticado | Se o usuário atual não for um usuário anônimo (autenticado), retorne true |
| Fullauthenticated | Retorne true se o usuário atual não for anônimo nem lembre -se do usuário |
| hasrole (função) | Se você tiver as permissões de função especificada na coleção atual de permissões de usuário (ao corresponder, 'Role_' será adicionada antes das permissões especificadas, ou seja, se você determinar se houver permissão "role_role"), retorne true. |
| hasanirol (Role1, Role2, ...) | Retorne true se você tiver alguma permissão de função na coleção atual de permissões de usuário |
| Hasauthority (autoridade) | Retorne true se as permissões atuais do usuário tiverem autoridade (corresponda se existe permissão de "autoridade") na coleta atual de permissões de usuário. |
| HasanyAuthority (autoridade) | Retorne true se você tiver alguma permissões na coleção atual de permissões de usuário |
| hasipaddress ("192.168.1.0/24") | FanHui verdadeiro ao enviar a correspondência IP solicitada |
Controle de acesso baseado em função RBAC (controle de acesso baseado em função)
Talvez você pense que o método acima pode atender ao gerenciamento de autorização de segurança da maioria dos aplicativos. No entanto, de fato, a autorização de aplicativos de nível corporativo geralmente se baseia em alterações dinâmicas nos dados do banco de dados. Se o splicing de string for usado acima, não apenas será extremamente hostil para os desenvolvedores (toda alteração do pessoal significa que o código precisa ser alterado, o que é obviamente irracional), mas o desempenho do aplicativo também será reduzido de acordo. Então, como resolvê -lo?
Modelo de dados
Um modelo geral de dados RBAC geralmente requer cinco tabelas (três tabelas de entidade e duas tabelas de relacionamento). As três tabelas de entidade incluem tabela de usuários, tabela de papéis e tabela de recursos. As duas tabelas de relacionamento incluem. A relação entre eles é a seguinte:
Modelo de dados RBAC
Tabela de usuários
Qualquer usuário deve ter uma tabela de usuários. Quando uma empresa muda de pessoal, o pessoal de negócios (como recursos humanos) adiciona e excluirá a tabela de dados.
Lista de papéis
Quais identidades a empresa possui, como presidente, vice -presidente, gerente de departamento etc., e há pessoal de negócios que opera os dados na tabela com base na situação específica da empresa.
Lista de recursos
Armazene os recursos que exigem controle de permissão. Como realmente usamos URLs quando usamos a autorização de controle, o pessoal de negócios não organiza entradas de dados de acordo com os URLs, mas operam na forma de uma interface de exibição. Assim, nesta tabela, os menus e os botões apresentados ao pessoal de negócios e aos URLs controlados pelas permissões.
Tabela de relacionamento com papel de usuário
Há uma relação muitos para muitos entre a tabela de usuários e a tabela de papéis (ID do usuário e ID da função). Um usuário pode ser várias funções (um usuário pode ser um gerente de departamento e um administrador), enquanto uma função geralmente corresponde a vários usuários.
Tabela de relacionamento com resistência a papéis
A tabela de papéis e a tabela de recursos () também são um relacionamento de muitos para muitos. Uma função pode acessar vários recursos (botões ou menus, etc.), e um recurso também pode ser acessado por várias funções.
A segurança da primavera também suporta expressões personalizadas para fazer o trabalho, assim
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.