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

افضل طريقة لتوظيف Refresh tokens && Access tokens

Samer Alashqar

السؤال

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

هذه اول مرة اتعامل بها مع 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...