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

السؤال

نشر

أبنى متجرا و ال user ثلاثة انواع منهم user - vendor - admin قمت بكتابة كود حتى افرق بين صلاحيات البائع (vendor) والمستخدم العادى (user) ولكنى اريد ان اضيف دور ثالث ألا وهو Admin 

هذا هو الكود باستخدام express-jwt 

 

const jwt = require("express-jwt");
const api = process.env.API_URL;

function authFN() {
  return jwt({
    secret: process.env.SECRET,
    algorithms: ["HS256"],
    isRevoked: isRevoked,
  }).unless({
    path: [
      `${api}/user/login`,
      `${api}/catgs`,
      `${api}/user`,
      { url: `${api}/test`, methods: ["GET", "OPTIONS"] },
    ],
  });
}

async function isRevoked(req, payload, done) {
  if (!payload.isVendor) {
    done(null, true);
  }

  done();
}
module.exports = authFN;

 

أى نوع من التغييرات ينبغى ان اطبقها على isRevoked function او على unless ؟؟

Recommended Posts

  • 0
نشر

في حالتك يمكن ان يكون استخدام jsonwebtoken مع express-jwt-permissions خيار افضل حيث تكون الشيفرة كالتالي

import * as jwt from 'jsonwebtoken';

 authenticate(req, res, next) {
  const payload = {
    name: 'John',
    surname: 'Smith',
    username: 'john.smith',
    permissions: ['USER', 'ADMIN',"VENDOR"],
  };
  const options = {
    expiresIn: Number(process.env.JWT_TTL),
  };
  const token = jwt.sign(payload, process.env.JWT_SECRET, options);
  res.status(201).send({ token });
}

ثم يمكنك التحقق في المسارات متى تحتاج كل نوع 

const guard = require("express-jwt-permissions")();

// all user routes
routes.use('/api', guard.check('USER'));
// ...

// all admin routes
routes.use('/api/admin/', guard.check('ADMIN'));
// ...

قم بالقراءة قليلا حول استخدام jsonwebtoken مع express اما عن استخدام express-jwt-permissions فهو مباشر 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...