Jeg tror, at bitvise operatører er den bedste måde at implementere brugertilladelse på. Her viser jeg, hvordan vi kan implementere det med MySQL.
Nedenfor er et eksempel på tabeller med nogle eksempeldata:
Tabel 1 :Tilladelsestabel til at gemme tilladelsesnavn sammen med det lidt som 1, 2, 4, 8.. osv. (multiple af 2)
CREATE TABLE IF NOT EXISTS `permission` (
`bit` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`bit`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Indsæt nogle eksempeldata i tabellen.
INSERT INTO `permission` (`bit`, `name`) VALUES
(1, 'User-Add'),
(2, 'User-Edit'),
(4, 'User-Delete'),
(8, 'User-View'),
(16, 'Blog-Add'),
(32, 'Blog-Edit'),
(64, 'Blog-Delete'),
(128, 'Blog-View');
Tabel 2 :Brugertabel til at gemme bruger-id, navn og rolle. Rolle vil blive beregnet som summen af tilladelser.
Eksempel:
Hvis brugeren 'Ketan' har tilladelse til 'User-Add' (bit=1) og 'Blog-Delete' (bit-64), så vil rollen være 65 (1+64).
Hvis brugeren 'Mehata' har tilladelse til 'Blog-View' (bit=128) og 'User-Delete' (bit-4), så rollen vil være 132 (128+4).
CREATE TABLE IF NOT EXISTS `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`role` int(11) NOT NULL,
`created_date` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Eksempeldata-
INSERT INTO `user` (`id`, `name`, `role`, `created_date`)
VALUES (NULL, 'Ketan', '65', '2013-01-09 00:00:00'),
(NULL, 'Mehata', '132', '2013-01-09 00:00:00');
Indlæser tilladelse for bruger Efter login, hvis vi ønsker at indlæse brugertilladelse, kan vi forespørge nedenfor for at få tilladelserne:
SELECT permission.bit,permission.name
FROM user LEFT JOIN permission ON user.role & permission.bit
WHERE user.id = 1
Her er user.role "&" permission.bit en Bitwise-operator, som vil give output som -
User-Add - 1
Blog-Delete - 64
Hvis vi ønsker at tjekke vejret, har en bestemt bruger tilladelse til at redigere eller ej-
SELECT * FROM `user`
WHERE role & (select bit from permission where name='user-edit')
Output =Ingen rækker.
Du kan også se:http://sforsuresh .in/implementation-of-user-permission-with-php-mysql-bitwise-operators/