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

السؤال

نشر
//ملف طبقه وسيطه 
const jwt = require('jsonwebtoken');
const models = require('../models/index');

const isLogedIn = async (req, res, next)=> {
    
    try {
        //take token form headers and verify it to and use JWT password in env to access the jwt to verify token
        const token = req.headers.authorization
        // after take token use verify mothed to compayr the secrt key to make token verifyed 
        const deCoded  = jwt.verify(token, process.env.JWT_SECRET);
        // take the token and add it to req.currentUser to be can use it in any where but should use it as meddilWhere
        req.currentUser = deCoded;
        //get req currntUser form deCoded and find the id
        const auhter = req.currentUser;
        const userShack = await models.User.findById(auhter)
        // see if user is exsest im db and see if token exsest in authorization headers
        if(!token || !userShack){
            return res.status(401).json({message: 'error token or user not exsist'})
        }
        next()
    } catch (e) {
        res.status(500).json(e);
    }
};

module.exports = isLogedIn;

هنا ملف الـتشفير 

exports.login = async (req, res) => {
    const { email, password } = req.body;
    try {
        const user = await models.User.findOne({email});
        // compare the password from register to real password using bcrypt module
        const authPassword = await bcrypt.compare(password, user.password);
        // if authPassword is true sgin data useing JWt module and print it in json body
        if (authPassword) {
            const token = jwt.sign({_id: user._id, name: user.name, email: user.email}, process.env.JWT_SECRET);
            // here we take token to save it in loaclStorg 
            res.status(200).json({accessToken: token});
        }else {
            res.status(401).json({ message: "بريد إلكتروني أو كلمة مرور غير صالحة" });
        };

    }catch (error) {
        console.error(error);
        res.status(500).json({ message: "Error during login", error: error.message });
    }
};

الrouteing

router.post('/login', userController.login);

الان السؤال لو افترضنا انني لا  اريد استعمال jwt ابدا كعمل موقع صفحه هبوط او اي موقع بسيط جدا ,فكيف سيتم حفظ تسجيل المستخدم بدون jwt و كطبقه وسيطه هل سنتعمل req.headers.authorization 

مستعملا postman لختابر التصال؟ 

Recommended Posts

  • 0
نشر

هناك طريقتين لعمل authorization أما عن طريق الtoken أو عن طريق ال session وعند استخدام ال session يمكنك الاستغناء عن ال headers وسوف تستخدم حاجة اسمها cookies ولن تحتاج لإرسالها سواء فى ال body أو ال headers لأنها ستكون محفوظة عند المستخدم فى الجهاز.

وأما عن استخدام postman فى حالة الاستغناء عن ال jwt token واستخدام ال session فيمكنك استخدامه أيضا فى تحقيق الاتصال.

 

  • 0
نشر
بتاريخ 28 دقائق مضت قال Khaled Osama3:

هناك طريقتين لعمل authorization أما عن طريق الtoken أو عن طريق ال session وعند استخدام ال session يمكنك الاستغناء عن ال headers وسوف تستخدم حاجة اسمها cookies ولن تحتاج لإرسالها سواء فى ال body أو ال headers لأنها ستكون محفوظة عند المستخدم فى الجهاز.

وأما عن استخدام postman فى حالة الاستغناء عن ال jwt token واستخدام ال session فيمكنك استخدامه أيضا فى تحقيق الاتصال.

 

هل هناك  مثله يمكن تطبيقها عمليا؟

 

  • 0
نشر

انت بحاجة إلى معرفة ال session وكيفية عملها وبعدها يمكنك التفكير فى تطبيق عملى تستطيع تنفيذ ما تعلمته فيه.

ال session موضوع طويل شوية بس مستخدم بكثرة وهو سهل التعلم ولكن ال jwt مستخدم أكثر.

ويجب عليك التركيز حاليا فى تعلم شئ واحد حتى لا تصاب بالتشتت ومن ثم الانتقال الى الموضوع الآخر.

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...