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

مشكلة في استخدام ملفات تعريف الارتباط cookies في node.js

Tamim Fahed

السؤال

أحاول استخدام ملفات تعريف الارتباط من خلال express في node.js ولكن لا يتم إضافتها بشكل صحيح، وهذا هو الكود:

var express = require('express'), http = require('http');
var app = express();
app.configure(function(){
      app.use(express.cookieParser());
      app.use(express.static(__dirname + '/public'));

      app.use(function (req, res) {
           var value_random=Math.random().toString();
           value_random=value_random.substring(2,value_random.length);
           res.cookie('cokkieName',value_random, { maxAge: 900000, httpOnly: true })

           console.log('test cookie created');
      });

});

var server = http.createServer(app);
server.listen(5555);

كيف يمكنني حل المشكلة؟

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

Recommended Posts

  • 1

إن ترتيب استخدام الوسطاء middlewares في node.js مهم ويحدث فرق في تنفيذ الكود البرمجي. والوسيط الذي يتم التصريح عنه أولاً سيتم استدعائه أولاً، وفي حال كان بإمكانه استقبال الطلب، لن يتم استدعاء أي وسيط آخر تم تعريفه بعده.

وفي الكود لديك، قمت بوضع express.static أولاً، وبالتالي هو من سيقوم باستقبال الطلب. لذلك يجب عليك إعادة ترتيب الكود لديك ليصبح بالشكل التالي:

app.use(express.cookieParser());


app.use(function (req, res, next) {
  
  var cookie = req.cookies.cookieName;
  if (cookie === undefined) {
   
    var value_random=Math.random().toString();
    value_random=value_random.substring(2,value_random.length);
    res.cookie('cookieName',value_random, { maxAge: 900000, httpOnly: true });
    console.log('test cookie created');
  } else {
     
    console.log('لقد تم تعريفها مسبقاً', cookie);
  } 

  next();

});

app.use(express.static(__dirname + '/public'));

ومع النسخ الحديثة من express تم فصل التعامل مع ملفات تعريف الارتباط، فيمكنك بدلاً من:

app.use(express.cookieParser());

يجب عليك تحميل المكتبة بشكل منفصل من خلال:

npm i cookie-parser

ثم استخدامها بالشكل التالي:

const cookieParser = require('cookie-parser');
app.use(cookieParser());

 

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

  • 0

هذه الشيفرة يمكنها العمل بدون مشاكل لكن في حالة ما كنت تستخدم نسخة express 2 وهي قديمة لذا تحقق أي نسخة من express انت تستخدم بالنسبة ل النسخة 4 يمكنك استخدام

var express = require('express');
var cookieParser = require('cookie-parser');

var app = express();
app.use(cookieParser());
app.use(express.static(__dirname + '/public'));

app.get('/', function (req, res) {
  // Cookies that have not been signed
  console.log('Cookies: ', req.cookies);

  // Cookies that have been signed
  console.log('Signed Cookies: ', req.signedCookies);
});

app.listen(8080);

 

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

  • -1

إذا كنت تستعمل Express v4، لتفعيل الكوكيز يتم تنصيب الحزمة cookie-parser، من الأمر التالي:

npm i cookie-parser

ثم استخدامها في ملف السرفر كالتالي

var express = require('express')
var cookieParser = require('cookie-parser')
 
var app = express()
app.use(cookieParser())

اذا أردت عمل Middleware يقوم بعمل كوكي ويضع في قيمتها رقم عشوائي (كما بالكود عندك)
 

app.use(cookieParser()); // يجب أن تستدعيها قبل استخدام الكوكيز

app.use(function (req, res, next) {
  var value_random = Math.random().toString();
  value_random=value_random.substring(2,value_random.length);
  res.cookie('cokkieName',value_random, { maxAge: 900000, httpOnly: true })

  console.log('test cookie created');
  next();
});

 

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...