Очистка нескольких файлов cookie - PullRequest
0 голосов
/ 23 марта 2011

Приведенный ниже код пытается очистить куки для всех доменов, как только пользователь выходит из системы.По какой-то причине очищается только последний домен в массиве.Почему это происходит?Я что-то не так делаю?

Например, если я изменяю размер массива на 4, а затем изменяю цикл for, чтобы переходить только на 3, он только выводит меня из y.xcv.com.

В качестве идентификатора у меня есть этот цикл, работающий на другом сервере, который использует немного другую функцию для очистки куки.

Редактировать: Код обновлен согласно предложениям ниже.Теперь происходит сбой в строке «as HttpCookie».Нужно ли включать какую-то библиотеку?

Dim aDomain(12)
Dim ESidCookie, WIdCookie, EBidCookie, TSidAccessCookie, PSidAccessCookie, SSidCookie As HttpCookie

aDomain(0) = ".x.com"
aDomain(1) = "y.x.com"
aDomain(2) = "y.x.com"
aDomain(3) = "y.xcv.com"
aDomain(4) = "x.com"
aDomain(5) = "y.z.a.com"
aDomain(6) = "y.z.a.com"
aDomain(7) = "z.a.com"
aDomain(8) = ""
aDomain(9) = "y.x.com"
aDomain(10) = "y.x.com" 
aDomain(11) = "y.x.com"

for count = 0 to 11
    strDomain = aDomain(count)
    response.Write count & "/" & strDomain

    ESidCookie = New HttpCookie("oneCookie")
    ESidCookie.Domain = strDomain
    ESidCookie.Path = "/"
    ESidCookie = ""
    ESidCookie.Expires = now() - 100
    Response.Cookies.Add(ESidCookie)

    WIdCookie = New HttpCookie("twoCookie")
    WIdCookie.Domain = strDomain
    WIdCookie.Path = "/"
    WIdCookie = ""
    WIdCookie.Expires = now() - 100
    Response.Cookies.Add(WIdCookie)

    EBidCookie = New HttpCookie("threeCookie")
    EBidCookie.Domain = strDomain
    EBidCookie.Path = "/"
    EBidCookie = ""
    EBidCookie.Expires = now() - 100
    Response.Cookies.Add(EBidCookie)

    TSidAccessCookie = New HttpCookie("fourCookie")
    TSidAccessCookie.Path = "/"
    TSidAccessCookie = "LoggedOut"
    Response.Cookies.Add(TSidAccessCookie)

    PSidAccessCookie = New HttpCookie("fiveCookie")
    PSidAccessCookie.Domain = strDomain
    PSidAccessCookie.Path = "/"
    PSidAccessCookie = ""
    PSidAccessCookie.Expires = now() - 100
    Response.Cookies.Add(PSidAccessCookie)

    SSidCookie = New HttpCookie("sixCookie")
    SSidCookie.Domain = strDomain
    SSidCookie.Path = "/"
    SSidCookie = ""
    SSidCookie.Expires = now() - 100
    Response.Cookies.Add(SSidCookie)
next

Любая помощь приветствуется.Спасибо!

Ответы [ 2 ]

0 голосов
/ 24 марта 2011

Если вы хотите удалить все куки, вы должны создать все новые с тем же именем. Вот основной пример, который должен помочь вам:

Dim newCookie As HttpCookie
For i As Integer = 0 To 10
    ' creating a new cookie each time
    newCookie = New HttpCookie(cookieNames(i))
    ' expire the cookie
    newCookie.Expires = DateTime.Now.AddDays(-1)
    ' storing the new cookie each time
    Response.Cookies.Add(newCookie)
Next

Не похоже, что вы создали все новые куки и правильно добавили их в ответ.

0 голосов
/ 24 марта 2011

Коллекция Response.Cookies исключена из имени файла cookie, поэтому вы просто меняете домен одного и того же файла cookie каждый раз, когда проходите цикл.Вот почему последний выигрывает.

Вы можете попробовать создать новый объект cookie и добавить его в коллекцию Response.Cookies в цикле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...