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

السؤال

نشر

السلام عليكم وكل عام وانتم بخير .. 
هذا رابط الريبو 

https://github.com/ahmedsawy1/Carna-Project

تحتوى على مجلدين الاول للفرونت اند ( React Native  ) والاخر للباك اند (Node js )

وكل شئ يعمل على ما يرام بخصوص ال Authentication حيث يمكننىتسجيل مستخدم او تسجيل الدخول باستخدام كلمة سر واميل صحيح وجلب ال token وكل شئ على ما يرام .. لكن المشكلة اننى عندما اقوم بتسجيل الدخول .. وجلب token صحيح ويعمل ويقوم بتسجيل الدخول فعلا .. وبعد عملية تسجيل الدخول الناجحة يدخل التطبيق على profile screen وهنا تظهر المشكلة وهى انه ال token يحصله Revoked ولا يظهر اى داتا خاصة بال user ولا استطيع ان اجلب البيانات الخاصة به مثل اسمه او بياناته لعرضها على صفحته الشخصية.

ارجو المساعدة 

Recommended Posts

  • 0
نشر

هذه المشكلة قد يكون لها علاقة بمدة التوكين ان كنت تستخدم jwt  او اي نوع اخر من ال Authentication  فمن خلال الbackend يمكنك تحديد مده صلاحية هذه التوكين و إن كان شئ اخر و قد قمت بذلك مسبقا فالرجاء ارسال الكود الخاص بالتسجل لمعرفة المزيد من التفاصيل عن الموضوع 

  • 0
نشر

أولا تحقق هنا أنك جلبت ال token بطباعة بسيطة للاطمئنان أن ال token تم جلبه

AsyncStorage.getItem("jwt")
      .then((res) => {
 		 console.log("token:",res)//هنا
        axios
          .get(`${baseURL}users/${context.stateUser.user.sub}`, {
            headers: { Authorization: `Bearer ${res}` },
          })
          .then((user) => setUserProfile(user.data));
      })
      .catch((error) => console.log(error));

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


const expressJwt = require("express-jwt");

function authJwt() {
  const secret = process.env.secret;
  const api = process.env.API_URL;
  return expressJwt({
    secret,
    algorithms: ["HS256"],
    isRevoked: isRevoked,
  }).unless({
    path: [
      { url: /\/public\/uploads(.*)/, methods: ["GET", "OPTIONS"] },
      // { url: /\/api\/v1\/courses(.*)/, methods: ["GET", "OPTIONS"] },
      { url: /courses(.*)/, methods: ["GET", "OPTIONS"] },
      // `${api}/users/login`,
      `/users/login`,
      // `${api}/users/register`,
      `/users/register`,
    ],
  });
}

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

  done();
}

module.exports = authJwt;

لا تستخدم auth  verfication على كل ال routes

app.use(authJwt());

استخدمها فقط عندما تحتاجها

app.use("/users/:id",authjwt, usersRouter);

استخدم مبدأ controllers لمساعدة routes لكي لا يكتض وهذا بانشاء مجلد controller ونقل المنطق هناك

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...