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

كيف احفظ بيانات قادمه من backend node.js الي cookies frontend

Kirolos Nagy2

السؤال

كيف احفظ بيانات قادمه من  node.js backend من مكتبه passport  الي cookies frontend 
تلقائي بدون اي function في الفرونت 

تم التعديل في بواسطة Kerollos Nagy
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

من خلال الإعتماد على middleware passport.session() لحفظ البيانات من backend إلى cookies في frontend تلقائيًا.، وذلك الوسيط middleware يستخدم مكتبة cookie-session لإنشاء وإدارة جلسات المستخدم.

وللاستخدام، أضف passport.session() إلى middleware chain الخاص بك:

app.use(passport.session());

ثم، يمكنك استخدام استراتيجية Passport الخاصة بك لحفظ البيانات في الجلسة، مثلا في حال  كنت تستخدم استراتيجية passport.local()، تستطيع حفظ اسم المستخدم وكلمة المرور في الجلسة باستخدام الكود التالي:

passport.use(new LocalStrategy((username, password, done) => {
  // Check the username and password against the database
  if (username === 'kerlos' && password === 'secret') {
    // The user is authenticated
    done(null, user);
  } else {
    // The user is not authenticated
    done(new Error('Invalid username or password'));
  }
}));

بمجرد حفظ البيانات في الجلسة، سيتم إرجاعها إلى frontend تلقائيًا.

وبإمكانك الوصول إلى البيانات باستخدام middleware cookie-parser()، ومثلاً للحصول على على اسم المستخدم نستخدم التالي:

const username = req.cookies.username;

وباستطاعتك أيضًا استخدام middleware cookie-parser() لإزالة البيانات من الجلسة،  فلتسجيل خروج المستخدم، استخدم الكود التالي:

req.session.destroy();

وإليك مثال كامل:

const express = require('express');
const passport = require('passport');
const cookieSession = require('cookie-session');

// Create an Express app
const app = express();

// Configure passport
app.use(passport.initialize());
app.use(passport.session({
  secret: 'secret',
}));

// Define a route that requires authentication
app.get('/protected', passport.authenticate('local'), (req, res) => {
  // The user is authenticated
  res.send('Hello, ' + req.user.username);
});

// Define a route that logs the user in
app.post('/login', (req, res) => {
  // Check the username and password against the database
  if (req.body.username === 'johndoe' && req.body.password === 'secret') {
    // The user is authenticated
    passport.authenticate('local')(req, res, () => {
      res.redirect('/protected');
    });
  } else {
    // The user is not authenticated
    res.send('Invalid username or password');
  }
});

// Define a route that logs the user out
app.get('/logout', (req, res) => {
  // Invalidate the user's session
  req.session.destroy();
  res.redirect('/');
});

// Start the app
app.listen(3000, () => {
  console.log('App listening on port 3000');
});

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...