আমার ওয়েবসাইটে যখন ব্যবহারকারী "লগআউট" বোতামে ক্লিক করেন, লগআউট.এএসপিএক্স পৃষ্ঠা কোড সহ লোড হয় Session.Clear()
।
এএসপি.এনইটি / সি# তে, এটি কি সমস্ত কুকি সাফ করে? বা আমার ওয়েবসাইটের সমস্ত কুকি মুছে ফেলতে অন্য কোনও কোড যুক্ত করার দরকার আছে কি?
উত্তর:
এরকম কিছু চেষ্টা করুন:
if (Request.Cookies["userId"] != null)
{
Response.Cookies["userId"].Expires = DateTime.Now.AddDays(-1);
}
তবে এটি ব্যবহারেও বোধগম্য হয়
Session.Abandon();
অনেক পরিস্থিতিতে ছাড়াও।
Cookies["whatever"]
অস্তিত্ব না থাকলে আসলে বাতিল হয়ে যায়! আমি জানি এটি একটি পুরানো মন্তব্য তবে আমি চাই না যে এই পাঠক দ্বারা অন্য পাঠকরা বিভ্রান্ত হয়।
Expires
সেট না DateTime.MinValue
করে এটি প্রকৃতপক্ষে কুকিকে একটি সেশন সমাপ্তি দেয়, যার অর্থ কুকি মোছার আগে ব্রাউজার / ট্যাব (ব্রাউজার নির্ভর) বন্ধ না হওয়া পর্যন্ত এটি অপেক্ষা করে।
না, কুকিজ কেবল তাদের প্রত্যেকের জন্য মেয়াদ শেষ করে সেট করে পরিষ্কার করা যায় clean
if (Request.Cookies["UserSettings"] != null)
{
HttpCookie myCookie = new HttpCookie("UserSettings");
myCookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(myCookie);
}
এই মুহুর্তে Session.Clear()
:
Session
সংগ্রহ থেকে সমস্ত কী-মান জোড়গুলি সরানো হয়েছে। Session_End
ঘটনা ঘটে না।লগআউট করার সময় আপনি যদি এই পদ্ধতিটি ব্যবহার করেন তবে ইভেন্টটি Session.Abandon
করার জন্য Session_End
আপনারও পদ্ধতিটি
ব্যবহার করা উচিত :
if
লাইনটি আসলে কাজ করে না। যখন আপনি Cookies["whatever"]
ফ্রেমওয়ার্ক সহ একটি কুকি চাইবেন সেটি উপস্থিত না থাকলে একটি কুকি তৈরি করবে will
Request
কোনও বস্তুকে কল দিলে এটি একটি কুকি তৈরি করবে ।
Response
বস্তুর জন্য একটি কুকি তৈরি করে । আকর্ষণীয় :)
Response.Cookies["UserSettings"].Expires = DateTime.Now.AddDays(-1)
। এখানে সার্ভার কুকি অপসারণের জন্য ব্রাউজারকে অনুরোধ করবে। ব্রাউজারটি উপস্থিত থাকলে এটি সরিয়ে ফেলবে।
এটি আমি ব্যবহার করি:
private void ExpireAllCookies()
{
if (HttpContext.Current != null)
{
int cookieCount = HttpContext.Current.Request.Cookies.Count;
for (var i = 0; i < cookieCount; i++)
{
var cookie = HttpContext.Current.Request.Cookies[i];
if (cookie != null)
{
var expiredCookie = new HttpCookie(cookie.Name) {
Expires = DateTime.Now.AddDays(-1),
Domain = cookie.Domain
};
HttpContext.Current.Response.Cookies.Add(expiredCookie); // overwrite it
}
}
// clear cookies server side
HttpContext.Current.Request.Cookies.Clear();
}
}
দুর্ভাগ্যক্রমে, আমার জন্য, "মেয়াদউত্তীর্ণ" সেটিংস সবসময় কাজ করে না। কুকিটি প্রভাবিত হয়নি।
এই কোডটি আমার পক্ষে কাজ করেছিল:
HttpContext.Current.Session.Abandon();
HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
"ASP.NET_SessionId"
কুকির নাম কোথায় এটি সত্যই কুকি মুছে দেয় না, তবে এটি একটি ফাঁকা কুকি দিয়ে ওভাররাইড করে, যা আমার কাছে যথেষ্ট ছিল।
আমি কেবল এটিই উল্লেখ করতে চাই যে সেশন আইডিকে কুকি সরিয়ে নেই সেশন.অ্যাবডন অন্যরা যেমন বলেছিল তেমনভাবে।
আপনি যখন একটি সেশন পরিত্যাগ করবেন তখন ব্যবহারকারীর ব্রাউজার থেকে সেশন আইডি কুকি সরানো হবে না। অতএব, অধিবেশনটি বাতিল হয়ে যাওয়ার সাথে সাথে একই অ্যাপ্লিকেশনটিতে যে কোনও নতুন অনুরোধ একই সেশনের আইডি ব্যবহার করবে তবে এতে একটি নতুন অধিবেশন রাজ্যের উদাহরণ থাকবে। একই সময়ে, ব্যবহারকারী একই ডিএনএস ডোমেনের মধ্যে অন্য অ্যাপ্লিকেশনটি খোলার পরে, একটি অ্যাপ্লিকেশন থেকে বিসর্জন পদ্ধতিটি কল করার পরে ব্যবহারকারী তার সেশন অবস্থা হারাবে না।
কখনও কখনও, আপনি সেশন আইডি পুনরায় ব্যবহার করতে চাইবেন না। আপনি যদি করেন এবং আপনি যদি সেশন আইডি পুনরায় ব্যবহার না করার কৌশলগুলি বুঝতে পারেন তবে একটি সেশন ত্যাগ করতে এবং সেশন আইডি কুকি সাফ করার জন্য নিম্নলিখিত কোড উদাহরণটি ব্যবহার করুন:
Session.Abandon(); Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
এই কোড উদাহরণটি সার্ভার থেকে সেশন স্থিতি সাফ করে এবং সেশনের স্থিতি কুকিকে বাতিল করে দেয়। নাল মানটি কার্যকরভাবে ব্রাউজার থেকে কুকি সাফ করে।
এটি এখন 2018, সুতরাং এএসপি.নেট কোর-এ ফাংশনে অন্তর্নির্মিত একটি সরাসরি ফরোয়ার্ড রয়েছে। একটি কুকি মুছতে এই কোডটি ব্যবহার করে দেখুন:
if(Request.Cookies["aa"] != null)
{
Response.Cookies.Delete("aa");
}
return View();
আপনার কখনই পাসওয়ার্ড কুকি হিসাবে সংরক্ষণ করা উচিত নয়। একটি কুকি মুছে ফেলতে, আপনাকে সত্যই এটির সংশোধন ও মেয়াদ শেষ করতে হবে। আপনি এটি সত্যিই মুছতে পারবেন না, অর্থাত্ এটি ব্যবহারকারীর ডিস্ক থেকে সরিয়ে ফেলুন।
এখানে একটি নমুনা দেওয়া হল:
HttpCookie aCookie;
string cookieName;
int limit = Request.Cookies.Count;
for (int i=0; i<limit; i++)
{
cookieName = Request.Cookies[i].Name;
aCookie = new HttpCookie(cookieName);
aCookie.Expires = DateTime.Now.AddDays(-1); // make it expire yesterday
Response.Cookies.Add(aCookie); // overwrite it
}
সমস্ত কুকি মুছে ফেলার হিসাবে ওপির প্রশ্নের শিরোনাম গ্রহণ করা - "ওয়েবসাইটে কুকিজ মুছুন"
আমি ডেভ ডোমাগালা থেকে ওয়েবে কোথাও কোথাও কোডটি পেয়েছি। আমি গুগল অ্যানালিটিক্স কুকিজকেও অনুমোদনের জন্য ডেভের সম্পাদনা করেছি - যা ওয়েবসাইটে পাওয়া সমস্ত কুকিজের মধ্য থেকে লুপ করেছে এবং সেগুলি মুছে ফেলেছে। (কোনও বিকাশকারী কোণ থেকে - কোনও বিদ্যমান সাইটে নতুন কোড আপডেট করা, ব্যবহারকারীদের সাইটে সাইটটি পুনর্বিবেচনার সমস্যাগুলি এড়ানোর জন্য একটি দুর্দান্ত স্পর্শ)।
আমি প্রথমে কুকিগুলি পড়ার সাথে সাথে কোনও প্রয়োজনীয় ডেটা ধরে রেখে নীচের কোডটি ব্যবহার করি - তারপরে নীচের লুপ দিয়ে সমস্ত পরিষ্কার করার পরে কুকিজটি পুনরায় সেট করা।
কোড:
int limit = Request.Cookies.Count; //Get the number of cookies and
//use that as the limit.
HttpCookie aCookie; //Instantiate a cookie placeholder
string cookieName;
//Loop through the cookies
for(int i = 0; i < limit; i++)
{
cookieName = Request.Cookies[i].Name; //get the name of the current cookie
aCookie = new HttpCookie(cookieName); //create a new cookie with the same
// name as the one you're deleting
aCookie.Value = ""; //set a blank value to the cookie
aCookie.Expires = DateTime.Now.AddDays(-1); //Setting the expiration date
//in the past deletes the cookie
Response.Cookies.Add(aCookie); //Set the cookie to delete it.
}
সংযোজন: আপনি যদি গুগল অ্যানালিটিক্স ব্যবহার করেন
উপরের লুপ / ডিলিটটি সাইটের সমস্ত কুকি মুছে ফেলবে, সুতরাং আপনি যদি গুগল অ্যানালিটিক্স ব্যবহার করেন - সম্ভবত এটি __utmz কুকি ধরে রাখা কার্যকর হবে কারণ এটি যে কোনও স্থানটি দর্শক কোথায় থেকে এসেছে, কোন অনুসন্ধান ইঞ্জিনটি ব্যবহার হয়েছিল, কী কী তা ট্র্যাক করে রাখে লিঙ্কটি ক্লিক করা হয়েছিল, কী কীওয়ার্ড ব্যবহৃত হয়েছিল এবং যখন আপনার ওয়েবসাইট অ্যাক্সেস করা হয়েছিল তখন তারা বিশ্বে কোথায় ছিল।
সুতরাং এটি রাখতে, একবার কুকির নাম জানা গেলে একটি সরল বিবরণটি মোড়ুন:
...
aCookie = new HttpCookie(cookieName);
if (aCookie.Name != "__utmz")
{
aCookie.Value = ""; //set a blank value to the cookie
aCookie.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(aCookie);
}
প্রতিক্রিয়া। কুকিজ ["ব্যবহারকারীসেটেটিং"] Exp
Session.Abandon
ASP.NET সেশন কুকি সাফ করবে, তবে আপনি এখানে ক্রেতাদের মতো ম্যানুয়ালি সেট করেছেন, যেমন ইউজারআইডি। এবংCookies["whatever"]
কখনই শূন্য হয় না; যদি আপনি অ-অস্তিত্বের জন্য অনুরোধ করেন তবে কাঠামোটি একটি কুকি তৈরি করবে।