Conception et analyse simples du système de gestion des autorisations

Classification des systèmes de gestion des autorisations :

Une classification simple en termes de catégories peut être divisée en deux catégories : l'authentification (utilisée pour identifier l'identité de l'utilisateur) et l'autorisation (donnée aux autorisations correspondantes à l'utilisateur en fonction de l'identité de l'utilisateur connecté).

 

Divisé du niveau de contrôle, il peut être divisé en 4 catégories : 1 niveau URL (contrôle d'autorisation à gros grain), 2 niveaux de méthode (contrôle d'autorisation à grain fin), 3 niveaux de page (via des balises, il est recommandé d'utiliser des balises personnalisées ), 4 Niveau de données (le contrôle d'autorisation le plus granulaire)

L'authentification et l'autorisation sont comme leurs noms l'indiquent. Cela va sans dire. Parlons des scénarios d'utilisation et de la mise en œuvre de base des quatre niveaux de contrôle.

Niveau URL : Parlons d'abord de son principe de mise en œuvre. Il est implémenté sur la base d'un filtre. Mon idée est de saisir l'URL lors de la demande, le filtre l'interceptera, coupera l'URL, puis ira dans la base de données pour vérifier en fonction de la coupe. Adresse. Si l'utilisateur actuel a cette autorisation, si c'est le cas, elle sera autorisée, sinon, elle sera bloquée. Après avoir parlé de la mise en œuvre, parlons de la raison pour laquelle le niveau d'URL est une gestion des autorisations à gros grain. Le niveau à gros grain est comparé au niveau à grain fin. Le filtre peut effectuer la gestion des autorisations, mais dans l'ensemble du processus de gestion, il est uniquement responsable de la gestion des URL. . L'autorisation "accès" ne contrôle pas les autorisations "opération" spécifiques sur la page correspondant à l'URL. Par exemple, un utilisateur peut accéder à une page, mais il existe certaines fonctions de cette page pour lesquelles l'utilisateur n'a pas l'autorisation.

Niveau méthode : De même, parlons de son implémentation spécifique. S'il s'agit d'une application construite sur la base du framework Spring, lorsqu'on parle du niveau méthode, la première chose qui vient à l'esprit est la programmation AOP, qui utilise le mécanisme proxy pour générer du proxy. classes sans changer le code.Pour obtenir des effets améliorés, nous pouvons implémenter un contrôle des autorisations au niveau de la méthode basé sur la programmation Spring AOP et parvenir véritablement à une gestion fine des autorisations. Avant d'accéder à une certaine méthode, nous utilisons Advice pour obtenir l'identifiant de l'utilisateur dans l'Advice et vérifier les autorisations en fonction de l'ID utilisateur.

Niveau de la page : lorsqu'un utilisateur accède à une page, il est déterminé à l'aide de balises personnalisées si l'utilisateur a l'autorisation d'accéder à certaines fonctions de la page. Si l'utilisateur a l'autorisation, il sera affiché. Dans le cas contraire, il ne sera pas affiché. .

Niveau base de données : un utilisateur peut être en mesure d'opérer sur des produits de catégorie A dans le tableau, mais ne peut pas opérer sur des produits de catégorie B. Lors de la conception de ce tableau, vous pouvez ajouter un champ d'autorisation à ce tableau.

 

Conception de la table d'autorisation :

Au niveau de l'URL, 7 tables (4+3) doivent être utilisées : 4 fait ici référence à la table des utilisateurs, à la table des rôles, à la table des autorisations, à la table des ressources, et 3 fait référence à la table de relations plusieurs-à-plusieurs entre les quatre tables. .

La conception des tables au niveau de la méthode ne nécessite que 5 tables (3+2) : par rapport au niveau URL, il n'y a pas de tables de ressources ni de tables de relations entre les ressources d'autorisation.

J'aime utiliser Apache Shiro. Bien qu'il s'agisse d'un contrôle d'autorisation au niveau de l'URL, il intègre les ressources, les autorisations et les relations correspondantes dans les fichiers de configuration.

 

 

Guess you like

Origin blog.csdn.net/qsw2lw/article/details/90116050