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

السؤال

نشر

السلام عليكم..

هذه اول مرة اتعامل بها مع Tokens وهذا ما قمت بانشائه باستخدام Refresh token && Access token لذلك لا اعلم هل ما قمته به جيد بحيث ان يتصدى لهجمات الاختراق ولو بشكل بسيط ؟ ام توجد به بعض الثغرات ؟

620a6a8da00ea_2022-02-14(2).thumb.png.1911d786663a2e024129602904a1cd5b.png

Recommended Posts

  • 0
نشر
بتاريخ 2 ساعات قال Hassan Hedr:

يرجى إرفاق الشيفرة المتعلقة بالاستفسار ضمن التعليق كنص مع تنسيقه بشكل مناسب لك يكون استفسارك أوضح للزوار

//authentication && authorization
exports.loginRequired = (req,res,next) => {
    // get tokens 
    const refreshToken = req.cookies['refresh-token']
    const token = req.cookies['access-token'];
    
    // check if refreshToken exist ?
    if(refreshToken === null)  res.status(401).sendFile(path.join(__dirname, "../views/index.html"))


                    // check if refreshToken verified ?
                    jwt.verify(refreshToken, process.env.REFRESH_TOKEN_SECRET, function(exp) {
                if(exp) {
                    const refAcToken = createToken(User.email);
                    res.cookie('refresh-token' , refAcToken);
                }
                else{
                    //check if token exist ?
                    if(token === null) res.status(401).sendFile(path.join(__dirname, "../views/index.html"));

                            //check if token verified ?
                            jwt.verify(token, process.env.ACCESS_TOKEN_SECRET, function (exp) {
                        if(exp) {
                            const accessToken = createToken(User.email);
                            res.cookie('access-token' , accessToken);
                            next()
                        }
                        else{
                            next()
                        }
                    });
                }
            });
}

 

  • 0
نشر

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

exports.loginRequired = (req, res, next) => {
  const refreshToken = req.cookies['refresh-token'];
  const token = req.cookies['access-token'];

  if (!refreshToken) res.status(401).sendFile(path.join(__dirname, '../views/index.html'));

  try {
    const refexp =  jwt.verify(refreshToken, process.env.REFRESH_TOKEN_SECRET);
    if (refexp) {
      const refAcToken = createToken(User.email);
      res.cookie('refresh-token', refAcToken);
    } else {
      if (!token) res.status(401).sendFile(path.join(__dirname, '../views/index.html'));
      const tokexp =  jwt.verify(token, process.env.ACCESS_TOKEN_SECRET);
      if (tokexp) {
        const accessToken = createToken(User.email);
        res.cookie('access-token', accessToken);
        next();
      } else {
        next();
      }
    }
  } catch (error) {
    res.status(401).sendFile(path.join(__dirname, '../views/index.html'));
  }
};

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...