Maison  >  Article  >  base de données  >  Comment concevoir une structure de table MySQL sécurisée pour implémenter des fonctions de contrôle d'autorisation ?

Comment concevoir une structure de table MySQL sécurisée pour implémenter des fonctions de contrôle d'autorisation ?

王林
王林original
2023-10-31 12:00:44957parcourir

Comment concevoir une structure de table MySQL sécurisée pour implémenter des fonctions de contrôle dautorisation ?

Comment concevoir une structure de table MySQL sécurisée pour implémenter des fonctions de contrôle d'autorisation ?

Avec le développement d'Internet, la sécurité des systèmes fait l'objet d'une attention croissante. Dans de nombreuses applications, le contrôle des autorisations est un moyen important de protéger les données et fonctionnalités sensibles. Dans la base de données MySQL, nous pouvons implémenter des fonctions de contrôle des autorisations en concevant correctement la structure des tables pour garantir que seuls les utilisateurs autorisés peuvent accéder à des données spécifiques.

Ce qui suit est une conception de base de la structure de table MySQL pour implémenter la fonction de contrôle des autorisations :

Nom de la table : utilisateurs
Champs : identifiant, nom d'utilisateur, mot de passe, identifiant_rôle

Nom de la table : rôles
Champs : id, nom_rôle

Nom de la table : permissions
Champs : id, permission_name

Nom de la table : role_permissions
Champs : role_id, permission_id

Nom de la table : user_roles
Champs : user_id, role_id

Ici, nous implémentons les rôles et les autorisations, les utilisateurs et les rôles via la relation entre les tables associées. . Voici un exemple de code pour créer la table et remplir les exemples de données :

-- Créer une table d'utilisateurs
CREATE TABLE utilisateurs (
id INT PRIMARY KEY AUTO_INCREMENT,
nom d'utilisateur VARCHAR(20) NOT NULL,
mot de passe VARCHAR(255) NOT NULL,
role_id INT
) ;

id INT PRIMARY KEY AUTO_INCREMENT,

permission_name VARCHAR(30) NOT NULL
);

--Create role_permissions table
CREATE TABLE role_permissions (

role_id INT,

permission_id INT,
PRIMARY KEY (role_id, permission_id)
);

--Créer une table user_roles

CREATE TABLE user_roles (

user_id INT,
role_id INT,
PRIMARY KEY (user_id, role_id)
);

-- Remplissez des exemples de données

INSERT INTO rôles (role_name) VALUES ('Administrateur' ), ('Éditeur'), ​​('Lecteur');

INSERT INTO permissions (permission_name) VALUES ('Créer un article'), ('Modifier l'article'), ('Supprimer l'article');
INSERT INTO role_permissions (role_id , permission_id) VALEURS (1, 1), (1, 2), (1, 3), (2, 2), (3, 3);
INSÉRER DANS les utilisateurs (nom d'utilisateur, mot de passe, role_id) VALEURS ('admin', 'mot de passe', 1), ('éditeur', 'mot de passe', 2), ('lecteur', 'mot de passe', 3);
INSERT INTO user_roles (user_id, role_id) VALUES (1, 1), (2, 2), (3, 3);

Grâce à la structure du tableau ci-dessus et aux exemples de données, nous pouvons implémenter les fonctions de contrôle d'autorisation suivantes :


Les administrateurs ont l'autorisation de créer, modifier et supprimer des articles ;

Les éditeurs ont la possibilité ; pour modifier les articles Autorisations ;

Les lecteurs n'ont aucune autorisation spéciale.

Dans l'application, une fois la vérification de connexion réussie, les autorisations dont dispose l'utilisateur peuvent être interrogées en fonction de l'ID de rôle de l'utilisateur, comme indiqué ci-dessous :
  1. SELECT p.permission_name
  2. FROM users AS u
  3. INNER JOIN user_roles AS ur ON u.id = ur.user_id
  4. INNER JOIN rôles AS r ON ur.role_id = r.id
  5. INNER JOIN role_permissions AS rp ON r.id = rp.role_id
  6. INNER JOIN autorisations AS p ON rp.permission_id = p.id
WHERE u. username = 'admin';

Grâce à la requête ci-dessus, nous pouvons obtenir les autorisations de l'utilisateur actuel, contrôlant ainsi l'accès de l'utilisateur aux données et aux fonctions en fonction des autorisations.


Il convient de noter que lors de la conception de la structure de la table, elle doit être conçue raisonnablement en fonction des besoins réels. En plus de la structure de table de base de l'exemple ci-dessus, vous pouvez ajouter davantage de champs et de relations entre tables en fonction des besoins spécifiques de votre entreprise.

En bref, en concevant rationnellement la structure des tables MySQL pour implémenter la fonction de contrôle des autorisations, la sécurité du système peut être efficacement protégée. J'espère que le contenu ci-dessus vous sera utile.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn