Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

प्रतिष्ठा के आधार पर अनुमतियों को लागू करना

user_table
id, etc

permission table
id, user_id, permission_type

इस संरचना के साथ, प्रत्येक उपयोगकर्ता के पास उनके खाते से संबद्ध कई अनुमति प्रकार हो सकते हैं, प्रत्येक उन सुविधाओं के सेट के लिए एक जो वे कर सकते थे प्रवेश की अनुमति। नए प्रकार की अनुमतियों को जोड़ने के लिए आपको कभी भी तालिका संरचना को बदलने की आवश्यकता नहीं होगी।

इसे एक कदम आगे ले जाने के लिए, आप प्रत्येक प्रकार की अनुमति को एक बाइनरी नंबर बना सकते हैं। इस तरह आप बिटवाइज़ ऑपरेटरों का उपयोग करके अनुमतियों के एक सेट को एक पूर्णांक द्वारा प्रदर्शित कर सकते हैं।

उदाहरण के लिए यदि आपके पास स्थिरांक थे

PERMISSION_CHANGE_PERMISSIONS = bindec('001') = 1
PERMISSION_MAKE_CHANGES = bindec('010') = 2
PERMISSION_ACCEPT_CHANGES = bindec('100') = 4

आप एक बिटवाइज़ ऑपरेटर "|" का उपयोग करके इन मानों को एक पूर्णांक में जोड़ सकते हैं।

(PERMISSION_CHANGE_PERMISSIONS | PERMISSION_MAKE_CHANGES) = bindec('011') = 3 = $users_combined_permissions

फिर यह जांचने के लिए कि क्या उनके पास कोई विशिष्ट अनुमति है, बिटवाइज़ ऑपरेटर "&" का उपयोग करें

($users_combined_permissions & PERMISSION_MAKE_CHANGES) = true

यदि आपने ऐसा किया है, तो आपको अनुमतियों के प्रत्येक सेट के लिए केवल एक डीबी रिकॉर्ड की आवश्यकता होगी।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. बड़े MySQL आयात के लिए कनेक्शन टाइमआउट को कैसे रोकें

  2. जावा को एक MySQL डेटाबेस से कनेक्ट करें

  3. MySQL में हेक्साडेसिमल मानों को बाइनरी के रूप में संग्रहीत करना

  4. MySQL में एक टेबल का आकार कैसे प्राप्त करें

  5. लैरावेल:नेस्टेड पर औसत कैसे प्राप्त करें कई रिश्ते हैं (हैमनीथ्रू)