একটি এএসপি.এনইটি ওয়েবসাইটে কীভাবে কুকি মুছবেন


87

আমার ওয়েবসাইটে যখন ব্যবহারকারী "লগআউট" বোতামে ক্লিক করেন, লগআউট.এএসপিএক্স পৃষ্ঠা কোড সহ লোড হয় Session.Clear()

এএসপি.এনইটি / সি# তে, এটি কি সমস্ত কুকি সাফ করে? বা আমার ওয়েবসাইটের সমস্ত কুকি মুছে ফেলতে অন্য কোনও কোড যুক্ত করার দরকার আছে কি?

উত্তর:


150

এরকম কিছু চেষ্টা করুন:

if (Request.Cookies["userId"] != null)
{
    Response.Cookies["userId"].Expires = DateTime.Now.AddDays(-1);   
}

তবে এটি ব্যবহারেও বোধগম্য হয়

Session.Abandon();

অনেক পরিস্থিতিতে ছাড়াও।


15
Session.AbandonASP.NET সেশন কুকি সাফ করবে, তবে আপনি এখানে ক্রেতাদের মতো ম্যানুয়ালি সেট করেছেন, যেমন ইউজারআইডি। এবং Cookies["whatever"]কখনই শূন্য হয় না; যদি আপনি অ-অস্তিত্বের জন্য অনুরোধ করেন তবে কাঠামোটি একটি কুকি তৈরি করবে।
Andomar

11
@ অ্যান্ডোমার, কুকিটির Cookies["whatever"]অস্তিত্ব না থাকলে আসলে বাতিল হয়ে যায়! আমি জানি এটি একটি পুরানো মন্তব্য তবে আমি চাই না যে এই পাঠক দ্বারা অন্য পাঠকরা বিভ্রান্ত হয়।
নুনো আগাপিতো

6
এটি অত্যন্ত গুরুত্বপূর্ণ যেটি Expiresসেট না DateTime.MinValueকরে এটি প্রকৃতপক্ষে কুকিকে একটি সেশন সমাপ্তি দেয়, যার অর্থ কুকি মোছার আগে ব্রাউজার / ট্যাব (ব্রাউজার নির্ভর) বন্ধ না হওয়া পর্যন্ত এটি অপেক্ষা করে।
নাশেনাস

7
@ নুনোআগাপিটো অনেক পুরানো তবে অন্যান্য ব্যবহারকারীর জন্য কুকিজ ["যা কিছু হোক না কেন]" যদি আপনি "অনুরোধ" থেকে পড়ে থাকেন এবং "প্রতিক্রিয়া" থেকে পড়ে থাকেন তবে খালি কুকি ফিরিয়ে দেন returns
এথিওয়াত চুনলখান

তবে এটি কেবল কুকি থেকে সামগ্রী সরিয়ে দেয়, কুকি এখনও আমার জন্য কমপক্ষে ব্রাউজারে থেকে যায়
বেইনিন

50

না, কুকিজ কেবল তাদের প্রত্যেকের জন্য মেয়াদ শেষ করে সেট করে পরিষ্কার করা যায় 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
Andomar

@ অ্যান্ডোমার এই কোডটি আমি এমএসডিএন থেকে পেয়েছি। আমি মনে করি না যে আমরা Requestকোনও বস্তুকে কল দিলে এটি একটি কুকি তৈরি করবে ।
ভিএমএটিএম

4
আহা, দেখে মনে হচ্ছে এটি কেবলমাত্র Responseবস্তুর জন্য একটি কুকি তৈরি করে । আকর্ষণীয় :)
Andomar

4
এই কোডটি কেবল এক লাইনেই অনুকূলিত করা যেতে পারে Response.Cookies["UserSettings"].Expires = DateTime.Now.AddDays(-1)। এখানে সার্ভার কুকি অপসারণের জন্য ব্রাউজারকে অনুরোধ করবে। ব্রাউজারটি উপস্থিত থাকলে এটি সরিয়ে ফেলবে।
শাশ্বত

4
হ্যাঁ আমার জন্য আমার রেসপন্স.কুকিজ.এড (মাইকুকি) অংশ প্রয়োজন - এটি ছাড়া এটি সর্বদা / সঠিকভাবে কাজ করে না। ধন্যবাদ
ক্রিস্টোফার ডি। এমারসন

28

এটি আমি ব্যবহার করি:

    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();
        }
    }

অনেক ধন্যবাদ! আমার সমস্যা থেকেও মুক্তি পেয়েছে যে কুকি সার্ভারের দিকটি আপডেট করবে না
টম এল সাফাদি

11

দুর্ভাগ্যক্রমে, আমার জন্য, "মেয়াদউত্তীর্ণ" সেটিংস সবসময় কাজ করে না। কুকিটি প্রভাবিত হয়নি।

এই কোডটি আমার পক্ষে কাজ করেছিল:

HttpContext.Current.Session.Abandon();
HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));

"ASP.NET_SessionId"কুকির নাম কোথায় এটি সত্যই কুকি মুছে দেয় না, তবে এটি একটি ফাঁকা কুকি দিয়ে ওভাররাইড করে, যা আমার কাছে যথেষ্ট ছিল।


5

আমি কেবল এটিই উল্লেখ করতে চাই যে সেশন আইডিকে কুকি সরিয়ে নেই সেশন.অ্যাবডন অন্যরা যেমন বলেছিল তেমনভাবে।

আপনি যখন একটি সেশন পরিত্যাগ করবেন তখন ব্যবহারকারীর ব্রাউজার থেকে সেশন আইডি কুকি সরানো হবে না। অতএব, অধিবেশনটি বাতিল হয়ে যাওয়ার সাথে সাথে একই অ্যাপ্লিকেশনটিতে যে কোনও নতুন অনুরোধ একই সেশনের আইডি ব্যবহার করবে তবে এতে একটি নতুন অধিবেশন রাজ্যের উদাহরণ থাকবে। একই সময়ে, ব্যবহারকারী একই ডিএনএস ডোমেনের মধ্যে অন্য অ্যাপ্লিকেশনটি খোলার পরে, একটি অ্যাপ্লিকেশন থেকে বিসর্জন পদ্ধতিটি কল করার পরে ব্যবহারকারী তার সেশন অবস্থা হারাবে না।

কখনও কখনও, আপনি সেশন আইডি পুনরায় ব্যবহার করতে চাইবেন না। আপনি যদি করেন এবং আপনি যদি সেশন আইডি পুনরায় ব্যবহার না করার কৌশলগুলি বুঝতে পারেন তবে একটি সেশন ত্যাগ করতে এবং সেশন আইডি কুকি সাফ করার জন্য নিম্নলিখিত কোড উদাহরণটি ব্যবহার করুন:

Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));

এই কোড উদাহরণটি সার্ভার থেকে সেশন স্থিতি সাফ করে এবং সেশনের স্থিতি কুকিকে বাতিল করে দেয়। নাল মানটি কার্যকরভাবে ব্রাউজার থেকে কুকি সাফ করে।

http://support.microsoft.com/kb/899918


5

এটি এখন 2018, সুতরাং এএসপি.নেট কোর-এ ফাংশনে অন্তর্নির্মিত একটি সরাসরি ফরোয়ার্ড রয়েছে। একটি কুকি মুছতে এই কোডটি ব্যবহার করে দেখুন:

if(Request.Cookies["aa"] != null)
{
    Response.Cookies.Delete("aa");
}
return View();

4

আপনার কখনই পাসওয়ার্ড কুকি হিসাবে সংরক্ষণ করা উচিত নয়। একটি কুকি মুছে ফেলতে, আপনাকে সত্যই এটির সংশোধন ও মেয়াদ শেষ করতে হবে। আপনি এটি সত্যিই মুছতে পারবেন না, অর্থাত্ এটি ব্যবহারকারীর ডিস্ক থেকে সরিয়ে ফেলুন।

এখানে একটি নমুনা দেওয়া হল:

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
    }

2

সমস্ত কুকি মুছে ফেলার হিসাবে ওপির প্রশ্নের শিরোনাম গ্রহণ করা - "ওয়েবসাইটে কুকিজ মুছুন"

আমি ডেভ ডোমাগালা থেকে ওয়েবে কোথাও কোথাও কোডটি পেয়েছি। আমি গুগল অ্যানালিটিক্স কুকিজকেও অনুমোদনের জন্য ডেভের সম্পাদনা করেছি - যা ওয়েবসাইটে পাওয়া সমস্ত কুকিজের মধ্য থেকে লুপ করেছে এবং সেগুলি মুছে ফেলেছে। (কোনও বিকাশকারী কোণ থেকে - কোনও বিদ্যমান সাইটে নতুন কোড আপডেট করা, ব্যবহারকারীদের সাইটে সাইটটি পুনর্বিবেচনার সমস্যাগুলি এড়ানোর জন্য একটি দুর্দান্ত স্পর্শ)।

আমি প্রথমে কুকিগুলি পড়ার সাথে সাথে কোনও প্রয়োজনীয় ডেটা ধরে রেখে নীচের কোডটি ব্যবহার করি - তারপরে নীচের লুপ দিয়ে সমস্ত পরিষ্কার করার পরে কুকিজটি পুনরায় সেট করা।

কোড:

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);    
}

1

যদিও এটি একটি পুরানো থ্রেড, আমি ভেবেছিলাম ভবিষ্যতে কেউ এখনও সমাধানের সন্ধান করছে কিনা।

HttpCookie mycookie = new HttpCookie("aa");
mycookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(mycookie1);

আমার জন্য কৌতুকটি কী করেছিল ts



0

কুকিজ মোছার জন্য আপনাকে মেয়াদোত্তীকরণের তারিখ নির্ধারণ করতে হবে

Request.Cookies[yourCookie]?.Expires.Equals(DateTime.Now.AddYears(-1));

কুকির অস্তিত্ব না থাকলে এটি ব্যতিক্রম করবে না।

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