Cet article présente la méthode de la sécurité du printemps pour contrôler l'autorisation et la partage avec vous, comme suit:
Utilisez la méthode d'autorisation pour configurer l'autorisation
Chaque expression d'autorisation de contrôle de sécurité du printemps (ci-après dénommé une expression) correspond en fait à une méthode d'autorisation dans l'API, qui est la méthode de traitement lorsque les autorisations URL demandées sont configurées. Par exemple:
@OverRideProtected void configure (httpsecurity http) lève une exception {http.authorizequests () .antmatchers (httpMethod.delete, "/User/*").hasrole("admin") .antmatchers ("/ index"). Permis (). .antMatchers ("/ Pay"). HasanyRole ("we_chat_pay", "ali_pay") .antmatchers ("/ debug"). HasipAddress ("192.168.1.0/24");}Utiliser les expressions d'autorisation pour autoriser les demandes de plusieurs autorisations
Alors, quand avez-vous besoin d'utiliser des expressions pour le traitement d'autorisation? Les exigences d'autorisation d'une demande de sécurité sont souvent complexes et diverses. Par exemple, la demande de débogage d'un projet s'attend à ce que le visiteur ait les deux droits de l'administrateur et doit y accéder via le LAN interne de la Société. En vertu de ces exigences, les méthodes fournies par l'API de sécurité ne peuvent être satisfaites que parce que ces méthodes d'autorisation ne peuvent pas être appelées en continu.
Vous pouvez utiliser des expressions d'autorisation pour résoudre ce problème:
@OverRideProtected void configure (httpSecurity http) lève une exception {http.AuthorizeEquests () .antmatchers ("/ debug") .access ("hasrole ('admin') et hasipaddress ('192.168.1.0/24')");}Exemple d'expression d'autorisation
| expression | illustrer |
|---|---|
| permis | Retourne vrai pour toujours |
| renoncer à | Retourne False pour toujours |
| anonyé | Si l'utilisateur actuel est un utilisateur anonyme, renvoyez True |
| souviens-toi de moi | Si l'utilisateur actuel est RememberMe, renvoyez True |
| authentifié | Si l'utilisateur actuel n'est pas un utilisateur anonyme (authentifié), renvoyez True |
| complet | Renvoie vrai si l'utilisateur actuel n'est ni un utilisateur anonyme ni releve |
| Hasrole (rôle) | Si vous avez les autorisations de rôle spécifiées dans la collection actuelle des autorisations utilisateur (lors de la correspondance, 'Role_' sera ajoutée avant les autorisations que vous avez spécifiées, c'est-à-dire si vous déterminez s'il existe une autorisation "Role_ROLE"), renvoyez True. |
| Hasanyrole (Role1, Role2, ...) | Retour True si vous avez des autorisations de rôle dans la collection actuelle des autorisations utilisateur |
| Hasauthority (autorité) | Renvoie True si les autorisations de l'utilisateur actuelles ont l'autorité (faire correspondre s'il existe une autorisation "autorité") dans la collection actuelle des autorisations utilisateur. |
| HasanyAuthority (autorité) | Retour True si vous avez des autorisations dans la collection actuelle des autorisations utilisateur |
| Hasipaddress ("192.168.1.0/24") | Fanhui vrai lors de l'envoi de la correspondance IP demandée |
Contrôle d'accès basé sur les rôles RBAC (contrôle d'accès basé sur les rôles)
Vous pensez peut-être que la méthode ci-dessus peut répondre à la gestion de l'autorisation de sécurité de la plupart des applications. Cependant, en fait, l'autorisation d'applications au niveau de l'entreprise est souvent basée sur des changements dynamiques dans les données de base de données. Si l'épissage des chaînes est utilisé ci-dessus, il sera non seulement extrêmement hostile aux développeurs (chaque changement de personnel signifie que le code doit être modifié, ce qui est évidemment déraisonnable), mais les performances de l'application seront également réduites en conséquence. Alors, comment le résoudre?
Modèle de données
Un modèle général de données RBAC nécessite généralement cinq tables (trois tables entités et deux tables de relation). Les trois tables entités incluent la table utilisateur, la table des rôles et la table des ressources. Les deux tables de relation incluent. La relation entre eux est la suivante:
Modèle de données RBAC
Table des utilisateurs
Tout utilisateur doit avoir une table d'utilisateurs. Lorsqu'une entreprise change de personnel, le personnel commercial (comme les ressources humaines) ajoutera et supprimera le tableau de données.
Liste de rôles
Quelles identités l'entreprise a-t-elle, comme le président, le vice-président, le directeur du département, etc., et il y a du personnel d'affaires qui exploite les données sur le tableau en fonction de la situation spécifique de l'entreprise.
Liste de ressources
Stockez les ressources qui nécessitent un contrôle de l'autorisation. Étant donné que nous utilisons réellement les URL lorsque nous utilisons l'autorisation de contrôle, le personnel commercial n'organise pas les entrées de données selon les URL, mais fonctionne à la place sous la forme d'une interface de vue. Ainsi, dans ce tableau, les menus et les boutons présentés au personnel d'affaires et aux URL contrôlées par les autorisations.
Table de la relation utilisateur
Il existe une relation plusieurs à plusieurs entre la table utilisateur et la table des rôles (ID utilisateur et ID de rôle). Un utilisateur peut être plusieurs rôles (un utilisateur peut être à la fois un gestionnaire de département et un administrateur), tandis qu'un rôle correspond souvent à plusieurs utilisateurs.
Table de la relation de ressources de rôle
Le tableau des rôles et le tableau des ressources () sont également une relation plusieurs à plusieurs. Un rôle peut accéder à plusieurs ressources (boutons ou menus, etc.), et une ressource est également accessible par plusieurs rôles.
Spring Security prend également en charge les expressions personnalisées pour faire le travail, comme celle-ci
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.