এক্সপ্রেসজেএসে কীভাবে একটি অধিবেশন শেষ করবেন


89

আমার মনে হচ্ছে এটি ডকুমেন্টেশনে কোথাও কবর দিতে হবে, তবে আমি এটি খুঁজে পাচ্ছি না।

এক্সপ্রেসজেএস-এ আপনি কীভাবে কোনও সেশন বন্ধ বা শেষ বা হত্যা (যাই হোক না কেন) করেন?

উত্তর:


125

এক্সপ্রেস 4.x আপডেট উত্তর

সেশন হ্যান্ডলিং আর এক্সপ্রেস মধ্যে নির্মিত হয় না। এই উত্তরটি মানক সেশন মডিউলটিকে বোঝায়: https://github.com/expressjs/session

সেশন ডেটা সাফ করার জন্য, সহজভাবে ব্যবহার করুন:

req.session.destroy();

ডকুমেন্টেশন এটিতে কিছুটা অকেজো। এটা বলে:

সেশনটি ধ্বংস করে, পুনরায় মূল্যায়ন অপসারণ করে পরবর্তী অনুরোধটি পুনরায় উত্পন্ন করা হবে। req.session.destroy(function(err) { // cannot access session here })

এর অর্থ এই নয় যে বর্তমান সেশনটি পরবর্তী অনুরোধে পুনরায় লোড হবে। এর অর্থ হ'ল পরবর্তী অনুরোধে আপনার সেশন স্টোরে একটি পরিষ্কার খালি অধিবেশন তৈরি করা হবে। (সম্ভবতঃ সেশন আইডি পরিবর্তন হচ্ছে না, তবে আমি এটি পরীক্ষা করিনি))


সেশন থেকে সেশন নষ্ট করার উপায় আছে এবং তাড়াতাড়ি অনুরোধ নয়। উদাহরণস্বরূপ যদি আমি সমস্ত ডিভাইসগুলির কার্যকারিতা থেকে আমাকে লগ আউট করতে পারি তবে আমার
এটির

4
@ মুহাম্মাদ উমর যতদূর আমি জানি, স্বেচ্ছাসেবীর অধিবেশন ধ্বংস করার জন্য কোনও বিল্ট-ইন মেকানিজম নেই। আপনি স্টোরেজ থেকে সেশনটির সাথে সম্পর্কিত কীগুলি মুছে ফেলে বা নিজের সেশন র‌্যাপার তৈরি করে সহজেই এটি প্রয়োগ করতে পারেন।
ব্র্যাড

94

কিছু মনে করবেন না, এটা req.session.destroy();


8
এটি এক্সপ্রেস 3 এ আমার জন্য কাজ করছে না .. আমি ´req.session.destroy () ´
এসিডঘস্ট

6
এক্সপ্রেসজেএস ৩.০০ এ আমার জন্য ভাল কাজ করা। req.session.destroy();অ্যাসিডঘোস্টের মতো ব্যবহৃত হয় Used
hexacyanide

4
req.session.destroy () এর ব্যবহার আমার জন্য 2.5 এক্সপ্রেসেও কাজ করে
TulioPa

4
এই নথি কোথায়? আমি এটি সন্ধান করার চেষ্টা করছি।
হুগি

25

কী ধরণের সেশন স্টোর ব্যবহার করা হচ্ছে তা প্রশ্নটি পরিষ্কার করে দেয়নি। উভয় উত্তর সঠিক বলে মনে হচ্ছে।

কুকি ভিত্তিক সেশনের জন্য:

Http://expressjs.com/api.html# কুকিসেশন থেকে

req.session = null // Deletes the cookie.

রেডিস ইত্যাদি ভিত্তিক সেশনের জন্য:

req.session.destroy // Deletes the session in the database.

4
req.session.destroy মূলত "req.session মুছে ফেলুন" এর একটি মোড়ক, উত্স-কোডটি এখানে দেখুন: github.com/expressjs/session/blob/master/session/session.js
tfmontague


7

ব্যবহার,

delete req.session.yoursessionname;

আমি সত্যিই এই সম্পর্কে একটি নথি দেখতে চাই।
অলস

4
এই সমস্ত ডাউন-ভোটিং @ নীথিনের জন্য; গিথুব (github.com/expressjs/session/blob/master/session/session.js) তে নথি হিসাবে সেশন.ডেস্ট্রয় () ফাংশন-পদ্ধতি "" this.req.session "মুছে ফেলা ব্যবহার করে - এটি ঠিক নিথিনের উত্তর নয়, তবে "মুছুন" ব্যবহার করাও একটি সঠিক সমাধান (এবং অন্যান্য উত্তরে আচ্ছাদিত নয়)।
tfmontague

এটি কি সঠিক সমাধান? কোনও স্মৃতি ফাঁস নয়, কিছু দুষ্টু জিনিস ঠিক হবে না?
রজনাথ

6

সেশন.ডেস্ট্রয় (কলব্যাক)

সেশনটি ধ্বংস করে এবং পুনরায় মূল্যায়ন সম্পত্তিটি আনসেট করবে। একবার সম্পূর্ণ হয়ে গেলে, কলব্যাকটি শুরু করা হবে।

নিরাপদ উপায় ↓ ✅

req.session.destroy((err) => {
  res.redirect('/') // will always fire after session is destroyed
})

অনিরাপদ উপায় ↓ ❌

req.logout();
res.redirect('/') // can be called before logout is done

5

ব্যবহার করে req.session = null;, প্রকৃতপক্ষে সেশন উদাহরণটি মুছবে না। সবচেয়ে উপযুক্ত সমাধানটি হবে req.session.destroy();তবে এটি মূলত একটি মোড়ক delete req.session;

https://github.com/expressjs/session/blob/master/session/session.js

Session.prototype.destroy = function(fn){
  delete this.req.session;
  this.req.sessionStore.destroy(this.id, fn);
  return this;
};

0
req.session.destroy(); 

উপরেরটি আমার পক্ষে কাজ করে নি তাই আমি এটি করেছি।

req.session.cookie.expires = new Date().getTime();

বর্তমান সময়ে কুকির মেয়াদোত্তীর্ণ সেট করে, অধিবেশনটির নিজস্ব মেয়াদ শেষ হয়ে গেল।


-5

বেশ কয়েকটি জায়গায় উল্লিখিত হিসাবে, আমি req.session.destroy () ফাংশনটি সঠিকভাবে কাজ করতেও সক্ষম নই।

এটি আমার চারপাশের কাজ .. কৌশলটি মনে হচ্ছে এবং এখনও req.flash ব্যবহার করার অনুমতি দেয়

req.session = {};

আপনি যদি মুছুন বা সেট করুন req.session = নাল; , তখন মনে হয় আপনি req.flash ব্যবহার করতে পারবেন না


4
এটি একটি সুরক্ষা ইস্যু, যেহেতু এটি অধিবেশনটির হ্যাশ পরিবর্তন করে না
তোশ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.