मुझे लगता है कि बिटवाइज़ ऑपरेटर उपयोगकर्ता की अनुमति को लागू करने का सबसे अच्छा तरीका है। यहाँ मैं दिखा रहा हूँ कि हम इसे MySQL के साथ कैसे लागू कर सकते हैं।
नीचे कुछ नमूना डेटा के साथ एक नमूना तालिका है:
तालिका 1 :अनुमति तालिका 1, 2, 4, 8.. आदि जैसे अनुमति नाम को स्टोर करने के लिए (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;
तालिका में कुछ नमूना डेटा डालें।
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');
तालिका 2 :यूजर आईडी, नाम और भूमिका को स्टोर करने के लिए यूजर टेबल। भूमिका की गणना अनुमतियों के योग के रूप में की जाएगी।
उदाहरण:
यदि उपयोगकर्ता 'केतन' को 'उपयोगकर्ता-जोड़' (बिट =1) और 'ब्लॉग-डिलीट' (बिट -64) की अनुमति है, तो भूमिका 65 (1+64) होगी।
यदि उपयोगकर्ता 'मेहता' के पास है 'ब्लॉग-व्यू' (बिट =128) और 'यूजर-डिलीट' (बिट -4) की अनुमति है, इसलिए भूमिका 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;
नमूना डेटा-
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');
उपयोगकर्ता की लॉजिंग अनुमति लॉगिन के बाद यदि हम उपयोगकर्ता अनुमति लोड करना चाहते हैं तो हम अनुमति प्राप्त करने के लिए नीचे क्वेरी कर सकते हैं:
SELECT permission.bit,permission.name
FROM user LEFT JOIN permission ON user.role & permission.bit
WHERE user.id = 1
यहाँ user.role "&" allow.bit एक बिटवाइज़ ऑपरेटर है जो आउटपुट देगा -
User-Add - 1
Blog-Delete - 64
अगर हम मौसम की जांच करना चाहते हैं तो किसी विशेष उपयोगकर्ता के पास उपयोगकर्ता-संपादन की अनुमति है या नहीं-
SELECT * FROM `user`
WHERE role & (select bit from permission where name='user-edit')
आउटपुट =कोई पंक्तियाँ नहीं।
आप यह भी देख सकते हैं:http://sforsuresh .in/implemention-of-user-permission-with-php-mysql-bitwise-operators/