أحمد عبد الله2 نشر 30 أكتوبر 2021 أرسل تقرير نشر 30 أكتوبر 2021 أبنى متجرا و ال 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 ؟؟ اقتباس
0 Salah Eddin Beriani2 نشر 31 أكتوبر 2021 أرسل تقرير نشر 31 أكتوبر 2021 في حالتك يمكن ان يكون استخدام 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 فهو مباشر اقتباس
السؤال
أحمد عبد الله2
أبنى متجرا و ال user ثلاثة انواع منهم user - vendor - admin قمت بكتابة كود حتى افرق بين صلاحيات البائع (vendor) والمستخدم العادى (user) ولكنى اريد ان اضيف دور ثالث ألا وهو Admin
هذا هو الكود باستخدام express-jwt
أى نوع من التغييرات ينبغى ان اطبقها على isRevoked function او على unless ؟؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.