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

डेटाबेस में एप्लिकेशन अनुमतियां संग्रहीत करना

मैं इसे इस तरह से करूँगा।

table name: permission
columns: id, permission_name

और फिर मैं कई से कई संबंध तालिका का उपयोग करके उपयोगकर्ता को एकाधिक अनुमतियां असाइन कर सकता हूं

table name: user_permission
columns: permission_id, user_id

यह डिज़ाइन मुझे जितनी चाहें उतनी अनुमति जोड़ने की अनुमति देगा, और इसे जितने चाहें उतने उपयोगकर्ता को असाइन करेगा।

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

एसीएल के कार्यान्वयन का मेरा तरीका इस प्रकार है:

  1. उपयोगकर्ता को एक भूमिका सौंपी जाएगी (व्यवस्थापक, अतिथि, कर्मचारी, सार्वजनिक)
  2. एक भूमिका में उन्हें एक या कई अनुमतियां सौंपी जाएंगी (user_write, user_modify, report_read) आदि।
  3. उपयोगकर्ता के लिए अनुमति उस भूमिका से विरासत में ली जाएगी जिसमें वह है
  4. उपयोगकर्ता को भूमिका से विरासत में मिली अनुमति के अलावा मैन्युअल अनुमति के साथ सौंपा जा सकता है।

ऐसा करने के लिए मैं निम्नलिखित डेटाबेस डिजाइन के साथ आया हूं।

role
I store the role name here 
+----------+
| Field    |
+----------+
| id       |
| role_name |
+----------+

permission:
I store the permission name and key here 
Permission name is for displaying to user.
Permission key is for determining the permission.
+----------------+
| Field          |
+----------------+
| id             |
| permission_name |
| permission_key  |
+----------------+

role_permission
I assign permission to role here 
+---------------+
| Field         |
+---------------+
| id            |
| role_id       |
| permission_id |
+---------------+

user_role
I assign role to the user here 
+---------------+
| Field         |
+---------------+
| id            |
| user_id       |
| role_id       |
+---------------+

user_permission
I store the manual permission I may allow for the user here 
+---------------+
| Field         |
+---------------+
| id            |
| user_id       |
| permission_id |
+---------------+

यह मुझे एसीएल पर अधिक नियंत्रण देता है। मैं सुपरएडमिन को स्वयं अनुमति देने की अनुमति दे सकता हूं, इत्यादि। जैसा कि मैंने कहा कि यह सिर्फ आपको एक विचार देने के लिए है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ऐप इंजन से Google क्लाउड एसक्यूएल के लिए कनेक्शन सीमाएं क्या हैं, और डीबी कनेक्शन का सर्वोत्तम पुन:उपयोग कैसे करें?

  2. त्रुटि कोड:1822। विदेशी कुंजी स्थिरांक जोड़ने में विफल। बाधा के लिए अनुपलब्ध अनुक्रमणिका

  3. MySQL संग्रहीत प्रक्रिया में डायनामिक SQL कैसे प्राप्त करें

  4. त्रुटि कोड:1222. उपयोग किए गए चयन कथनों में स्तंभों की संख्या भिन्न होती है

  5. LIKE . का उपयोग करके GROUP_CONCAT खोजें