কীভাবে রেলগুলিতে একটি সেশন খালি / নষ্ট করবেন?


133

আমি এটি কোথাও খুঁজে পাচ্ছি না ... আমি কীভাবে মুছে ফেলব / ধ্বংস / পুনরায় সেট / ফাঁকা / ব্যবহারকারীর সেশনটি সাফ করব? শুধু একটি মান নয় পুরো জিনিস ..

উত্তর:


203

পুরো জিনিসটি সাফ করার জন্য একটি নিয়ামকটিতে রিসেট_সেসশন পদ্ধতিটি ব্যবহার করুন।

reset_session

এই পদ্ধতিতে এখানে ডকুমেন্টেশন রয়েছে: http://api.rubyonrails.org/classes/ActionController/Base.html#M000668

এর মধ্যে সঞ্চিত সমস্ত অবজেক্ট সাফ করে এবং একটি নতুন সেশন অবজেক্টটি আরম্ভ করে সেশনটি পুনরায় সেট করে।

শুভকামনা!


1
ডাটাবেস-ভিত্তিক সেশনের জন্য (যা আপনার সম্ভবত ব্যবহার করা উচিত) আপনি কোনও প্রশ্নের মাধ্যমে মেয়াদ শেষ করতে পারেন: guids.rubyonrails.org/security.html#session-expiry
m33lky

44

রেলগুলিতে সেশন একটি হ্যাশ অবজেক্ট। সুতরাং হ্যাশ সাফ করার জন্য উপলব্ধ যে কোনও কার্য সেশনগুলির সাথে কাজ করবে।

session.clear

অথবা যদি নির্দিষ্ট কীগুলি ধ্বংস করতে হয়:

session.delete(key)

রেল পরীক্ষিত 3.2

যোগ

লোকেরা উল্লেখ করেছে session={}এটি একটি খারাপ ধারণা। প্রসঙ্গে session.clear, লোবাতি মন্তব্য করেছেন - দেখে মনে হচ্ছে আপনি রিসেট_সেসশনটি [সেশন ক্লেয়ারের চেয়ে] ব্যবহার করা থেকে সম্ভবত ভাল, কারণ এটি সেশন কোড ক্লিয়ার যা কিছু করে তা পরিস্কার করে। অভ্যন্তরীণভাবে, রিসেট_সেশন কল করে সেশন.ডেস্ট্রয় , যা নিজেই ক্লিয়ার পাশাপাশি কিছু অন্যান্য স্টাফও কল করে।


Gdeglin দ্বারা প্রস্তাবিত বনাম এই পদ্ধতির যোগ্যতা সম্পর্কে কারও কোনও ধারণা আছে?
পিটার বার্গ

3
আপনি অন্যান্য প্যারামিটার ধরে রাখতে চাইলে এটি ব্যবহার করা যেতে পারে তবে একটি নির্দিষ্ট কী মান জুটি মুছুন।
ল্যাভিক্সু

1
এটি সেশনটি মোটেও পুনরায় সেট করবে না এটি একটি স্থানীয় ভেরিয়েবল বরাদ্দ করবে। সেশনটি পুনরায় সেট করতে কখনও এই কৌশলটি ব্যবহার করবেন না: সেশন = {}
অ্যালেক্সস্পেলার

4
পাগল ডকুমেন্টেশন , বিভাগে 5.1 সেশন অ্যাক্সেস করা এবং একটি নতুন অধিবেশন উৎপন্ন যদি আপনি সরাতে স্ক্রিপ্ট সন্নিবেশিত কী / মান জোড়া (কিছু একটি নিয়ামক থেকে ঢোকানো প্রাক্তন) চান reset_session ব্যবহার করতে পরামর্শ দেওয়া হচ্ছে। আপনি যে কী / মান জুটি সেট করেছেন তা যদি পুনরায় সেট করতে চান তবে এই কীগুলি শূন্য করতে সেট করুন।
সারগাস

1
@ বারলপ দেখে মনে হচ্ছে আপনি সম্ভবত ব্যবহার করা আরও ভাল reset_session, কারণ এটি কিছু করা ছাড়িয়ে অন্য কিছু পরিষ্কার session.clearকরে। অভ্যন্তরীণভাবে, reset_sessionকলগুলিsession.destroy , যা নিজে কল clearকরে পাশাপাশি কিছু অন্যান্য জিনিস
লোবাতি

6

ব্যবহারকারীর সেশন মুছতে

session.delete(:user_id)

সাবধান, আপনি ডাটাবেস থেকে ব্যবহারকারীর রেকর্ড মুছতে পারেন!
আর্থার

2
@ আর্থার এটি সত্য নয়। তবে আপনি কেবলমাত্র সেশনটি থেকে: ইউজার_আইডি কীটি মুছে
ফেলবেন

5

কেবলমাত্র নির্দিষ্ট প্যারামিটারগুলি সাফ করতে আপনি ব্যবহার করতে পারেন:

[:param1, :param2, :param3].each { |k| session.delete(k) }

2

আপনার অ্যাপ্লিকেশনকন্ট্রোলারে এই কোডটি যুক্ত করুন

def reset_session
  @_request.reset_session
end

(জানেন না কেন উপরে কেউই এই কোডটি কেবল আমার সমস্যাটির স্থির করে না কেন) http://apidock.com/rails/ActionController/RackDelegation/reset_session


আমি এটি @_request.reset_sessionএবং reset_sessionউভয়ই কাজ খুঁজে পাই এবং সম্ভবত একই কাজ করব?
বার্লোপ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.