اريد أن اعرف ما هي الطريقة المتبعة هنا حين يتم تسجيل الدخول تذهب تسجيل الدخول وتظهر الصف الدراسي،
هل هي عن طريق v-if
أم كمبوننت خاص يتم التحويل بينهم؟
ومتى يتم جلب البانات الخاصة بالمستخدم
created ???
الـ vue directives أسرع بكثير
لذلك v-if, v-else يستخدمان في مواضع مثل المثال المذكور
داخل الكومبوننت يمكنك وضع Boolean variable مثلا:
export default {
data () {
isLogged: false;
}
}
يمكنك التلاعب بالمتغير من الباك اند، الدالة المسؤولة عن تسجيل الدخول تكون promise function
اذا نجحت العملية يمكنك تغيير قيمة المتغير… سأستخدم نموذج مما طبقت من قاعدة بيانات firebase:
methods: {
firebase.auth().createUserWithEmailAndPassword(email, password)
.then(() => {
// يمكنك هنا قلب المتغير
this.isLogged: true
})
.catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// ...
});
}
الآن يمكنك التحكم في اظهار واخفاء أي عنصر عن طريق استخدام v-if معتمدة على قيمة isLogged
كما أشار @sniperadmin
ببساطة بمجرد تسجيل العضو والتأكد من بياناته يتم تخزين حالته من خلال الـ Vuex تحت state
بمسمى isLogin
مثلاً.
فعندما يكون مسجل دخول هذه الـ state تكون قيمتها true
وعندما يكون غير مسجل للدخول تكون قيمتها false
الأن تستطيع بإستخدام هذه الـ state
إظهار او اخفاء أي عناصر بإستخدام الـ v-if, v-else
وتستطيع أيضاً إضافة الـ Navigation Guards
التي من خلالها ستحدد إذا ما كان العضو مسجل ولدية صلاحية للوصول إلى الكلاس روم ام لا.
ومتى يتم جلب البانات الخاصة بالمستخدم
created ???
بمجرد ضغط المستخدم على زر “تسجيل الدخول” والتأكد من بياناته سيتم تخزين حالته وبياناته بالـVuex
ومن ثم بإمكانك إستخدامها أين ما شئت في أي مكان بإستدعائها بالـ getters
لذا ليس عليك ان تقوم بعمل طلب للـ api في كل مرة لإحضار بيانات العضو ولكن ستقوم بذلك مرة واحدة عند تسجيلة للدخول.
تمام انا عملت بالضبط مثل مو ذاكر والامور تمام
لكن يوجد مشكلة انه كل ما اقوم بتحديث الصفحة يتم حذف باينات vue x وبالتالي يحتاج المستخدم لتسجيل دخول من جديد
انا استخدم cookies لكن كيف احفظ قيمة من الكوكيز ألى vuex مع كل تحديث يعني اريد أن يقوم vue x بتخزين البيانات من cookies
وحين حاولت ان أخزن
x : this.$cookies.get('isLogin ')
تواجهني مشكلة انه ياخذ القيمة الأولى ومن ثم لا يساجيب بعدها
أشرح لي التطبيق الذي تعمل عليه وكذلك جيب لي رابط المستودع أطلع عليه. علشان يكون ردي مساعد لك على تجاوز المشكلة التي تواجهها
هو عبارة عن مشروع اتعلم به على المهارات التي تعلمتها من ناحية ومن ناحية اخرة هو برنامج محاسبة احوله لويب ابلكيشن
ارجوا الطلاع على التفاصيل واعطني ملاحظاتك
لم أجرب الكود عندي صراحة لكن على ما يبدو، يجب ان تحتفظ بالـcookies داخل الـstore ، منطقي لأن ميكانيكا الAuthentication تتم داخل الـstore
تفقد هذا الكود ويمكنك الاقتباس منه (مشروع open source):
شكرأ جزيلاً
لقد نجحت
لقد قمت بتخزين الكوكز داخل الستور وتمت العملية بنجاح.
أبشر بالخير
بعض الأشياء تكون في ذاتها Logic، أو يكون في طياتها منطق ورؤية، لذلك البرمجة بالخطوات وحدها لن تكفي
السر وراء فقدان المستخدم صلاحيات الدخول هو عدم تخزين الـAccess Token، والتي ربما تم زرعها في كومبوننت مستقل خارج الstore
مما يخلق فجوة (بمجرد التسجيل تتولد الرخصة لكن تطير)
أعتقد أنه يمكن حفظ الtoken داخل كومبوننت لكن لم أجربها، وأيضا من حيث الأمان (الtoken لا تظهر للمستخدم في المتصفح في حالة استخدام vuex)
**هذا المقال ** يوضح كيفية اختراق الaccess token لفيس بوك، والتي اكتشفها مهندس الاختراق المصري Ahmed Elsobky,،
وينصح بتشفير الـrequests ببروتوكول HTTPS على أقل تقدير
الآن أحاول البحث عن المزيد في أمن المعلومات بخصوص هذا الشأن، وأنا على يقين أن أساتذتنا يستطيعون توفير بعض الـtips & tricks في المستقبل
Happy Coding!