اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

يوجد الحزمة accesscontrol ويمكنك استخدامها مثل :

const ac = new AccessControl();
ac.grant('user')                    // define new or modify existing role. also takes an array.
    .createOwn('video')             // equivalent to .createOwn('video', ['*'])
    .deleteOwn('video')
    .readAny('video')
  .grant('admin')                   // switch to another role without breaking the chain
    .extend('user')                 // inherit role capabilities. also takes an array
    .updateAny('video', ['title'])  // explicitly defined attributes
    .deleteAny('video');
 
const permission = ac.can('user').createOwn('video');
console.log(permission.granted);    // —> true
console.log(permission.attributes); // —> ['*'] (all attributes)
 
permission = ac.can('admin').updateAny('video');
console.log(permission.granted);    // —> true
console.log(permission.attributes); // —> ['title']

يمكنك الوصول إلى الصفحة الخاصة بالحزمة من هنا

  • 0
نشر

للحصول على حزمة تحكم الوصول والأذونات (Role and Permission Package) في Express ، يمكنك استخدام حزمة كالتالي:

1. يجب عليك تثبيت حزمة 

npm install acl

واستيرادها في ملف التطبيق الخاص بك.

2. يجب إنشاء ملف JSON يحتوي على الأدوار والأذونات التي يمكن لكل دور القيام بها.

3. بمجرد إنشاء ملف JSON ، يمكنك تعريف ACL (Access Control List) وإضافة الأذونات والأدوار إليها.

4. يمكنك الآن استخدام ACL لحماية مسارات التطبيق الخاصة بك وتحديد الأدوار التي يمكنها الوصول إلى كل مسار.

5. يمكنك أيضًا إنشاء middleware خاص بك للتحقق من الأدوار والأذونات المطلوبة للوصول إلى مسار محدد.

و هناك العديد من الحزم والمكتبات المتاحة لتحقيق التحكم في الوصول والأذونات في تطبيق Express. هنا بعض الأمثلة:

1. `acl`: هذه الحزمة تستخدم لتحقيق التحكم في الوصول والأذونات. يمكن استخدامها لتحديد الأذونات لكل دور ومنع الوصول إلى المسارات التي لا يحق للمستخدم الوصول إليها. يمكن تثبيتها باستخدام الأمر التالي:

npm install acl

2. `express-acl`: هذه الحزمة تستخدم لتحقيق التحكم في الوصول والأذونات أيضًا. يمكن استخدامها لحماية المسارات المختلفة في تطبيق Express. يمكن تثبيتها باستخدام الأمر التالي:

npm install express-acl

3. `connect-roles`: هذه الحزمة تستخدم لتحقيق التحكم في الوصول والأذونات أيضًا. يمكن استخدامها لتحديد الأذونات لكل دور ومنع الوصول إلى المسارات التي لا يحق للمستخدم الوصول إليها. يمكن تثبيتها باستخدام الأمر التالي:

npm install connect-roles

وهناك المزيد من الحزم والمكتبات المتاحة لتحقيق التحكم في الوصول والأذونات في تطبيق Express. يمكنك البحث عن الحزم التي تناسب احتياجات تطبيقك الخاص.

  • 0
نشر

بجانب حزمة accesscontrol يوجد حزم أخرى تؤدي نفس الغرض.

1- حزمة "express-session"

  • أدوار: تمنح المستخدمين أو العملاء دورًا معينًا مثل "مستخدم عادي" أو "مشرف".
  • أذونات: يمكن تعيين الأذونات لكل دور بناءً على احتياجات التطبيق، مثل الوصول إلى صفحات معينة أو القدرة على إجراء إجراءات معينة.

2- حزمة "passport"

  • أدوار: تتيح للمستخدمين تسجيل الدخول باستخدام مقدمي الخدمة المعتمدين مثل Google أو Facebook أو Twitter.
  • أذونات: تعيين الأذونات لكل مستخدم معتمد بناءً على معلوماته والتحقق من صحته.

3- حزمة "jsonwebtoken"

  • أدوار:  إنشاء رموز مصادقة (tokens) للمستخدمين الموثوق بهم للوصول إلى موارد محددة.
  • أذونات:  تضمين الأذونات داخل الرموز المصادقة لتحديد الصلاحيات والوصول المسموح به.

4- حزمة "acl"

  • أدوار:  إنشاء مجموعات أدوار مخصصة وتعيين أذونات محددة لكل دور.
  • أذونات:  تعيين الأذونات على المسارات والإجراءات والموارد الأخرى في التطبيق.

5- حزمة "connect-roles"

  • أدوار: إنشاء أدوار مخصصة وتعيينها للمستخدمين لتحديد صلاحياتهم.
  • أذونات: تعيين الأذونات لكل دور مثل الوصول إلى صفحات معينة أو القدرة على إجراء إجراءات معينة.

وإليك مثال مفصل على كيفية استخدام حزمة "express-session" لإدارة أدوار المستخدمين:

1-  تثبيت حزمة "express-session" باستخدام npm عبر الأمر التالي.

npm install express-session

2- استيراد الحزمة وتكوينها.

عليك إضافة التالي في ملف التهيئة الخاص بتطبيقك (مثل app.js أو server.js):

const session = require('express-session');

app.use(session({
  secret: 'secret-key',
  resave: false,
  saveUninitialized: true
}));

هنا، يتم استيراد حزمة "express-session" وتكوينها لاستخدامها في تطبيق Express، وتحديد المفتاح السري (secret-key) الذي يستخدم لتوقيع وتشفير معلومات الجلسة.

3- تعيين دور المستخدم.

عند تسجيل الدخول للمستخدم، تستطيعي تعيين دوره بناءً على المعلومات الخاصة به. 

app.post('/login', (req, res) => {
  // تحقق من صحة بيانات المستخدم وتنفيذ العمليات اللازمة
  // عند التحقق من صحة بيانات المستخدم، قم بتعيين دور المستخدم
  req.session.role = 'مستخدم عادي';

  res.send('تم تسجيل الدخول بنجاح');
});

4- التحقق من دور المستخدم وإعدادات الأذونات.

تستطيعي التحقق من دور المستخدم وتعيين الأذونات المناسبة في مسارات التطبيق المناسبة.

app.get('/admin', (req, res) => {
  if (req.session.role === 'مشرف') {
    // يتمكن المشرف من الوصول إلى هذه الصفحة
    res.send('مرحبًا بك، مشرف');
  } else {
    // الوصول مرفوض للمستخدمين العاديين
    res.status(403).send('عذرًا، ليس لديك الصلاحية للوصول إلى هذه الصفحة');
  }
});

 

  • 0
نشر

بجانب المقترح، أفضل عن نفسي استعمال حزمة express-jwt، وهي واحدة من الحزمة التي توفر وسيلة سهلة لتنفيذ نظام المصادقة والتحقق من الهوية باستخدام JSON Web Tokens (JWT) في تطبيقات Express.

لتثبيت حزمة "express-jwt" واستخدامها في مشروعك، يمكنك اتباع الخطوات التالية:

  • قم بتثبيت حزمة "express-jwt" من خلال تشغيل الأمر التالي:
npm install express-jwt
  • في ملف التطبيق الخاص بك (مثل app.js أو server.js)، قم بتضمين حزمة "express-jwt" واستخدامها في تطبيق Express الخاص بك، كما هو موضح في المثال التالي:
const express = require('express');
const jwt = require('express-jwt');
const jwks = require('jwks-rsa');

const express = require('express');
const jwt = require('express-jwt');
const jwks = require('jwks-rsa');

const app = express();

// تهيئة express-jwt للتحقق من التوكن وفحص الأذونات
const checkJwt = jwt({
  secret: jwks.expressJwtSecret({
    cache: true,
    rateLimit: true,
    jwksRequestsPerMinute: 5,
    jwksUri: 'https://your-auth0-domain/.well-known/jwks.json', // رابط تحميل مفاتيح التوقيع العمومية
  }),
  audience: 'your-audience', // الجمهور المستهدف للتوكن
  issuer: 'https://your-auth0-domain/', // المصدر الذي أصدر التوكن
  algorithms: ['RS256'], // خوارزمية التوقيع المستخدمة في التوكن
});

// تطبيق حزمة express-jwt كوسيط (Middleware) في تطبيق Express
app.use(checkJwt);

// تعريف طرق التوجيه الخاصة بك

// مثال: طريقة GET محمية بالتحقق من التوكن والأذونات
app.get('/protected', checkJwt, (req, res) => {
  // قم بتنفيذ الأعمال المطلوبة للطريق المحمية هنا
  res.send('Protected route');
});

// استجابة للأخطاء في التوكن أو الوصول المرفوض
app.use((err, req, res, next) => {
  if (err.name === 'UnauthorizedError') {
    res.status(401).json('Unauthorized');
  }
});

// بدء تشغيل الخادم
app.listen(3000, () => {
  console.log('Server started on port 3000');
});

تذكر أن تعديل القيم في الكود السابق وفقًا لاحتياجات تطبيقك الفعلية، مثل رابط تحميل مفاتيح التوقيع العمومية والجمهور المستهدف والمصدر الذي أصدر التوكن وما الى ذلك.

طبعا فإن هذا مثال بسيط على كيفية استخدام حزمة "express-jwt" لتنفيذ نظام المصادقة والتحقق من الهوية في تطبيق Express الخاص بك. يمكنك استكشاف المزيد من الوظائف والتكوينات المتاحة في وثائق الحزمة لتلبية متطلبات تطبيقك والتوسع في الفكرة بشكل أفضل.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...