Как изменить имя файла cookie сеанса Hunchentoot, специализируя функцию? - PullRequest
4 голосов
/ 21 января 2010

Я использую Hunchentoot и хотел бы изменить имя файла cookie сеанса. Это реализовано с помощью универсальной функции, и в документах говорится, что для изменения имени вы можете «специализировать функцию».

Я не совсем уверен, что это значит здесь. У меня сложилось впечатление, что специализация функции - отправка метода для определенных типов аргументов. В этом конкретном случае функция принимает серверный акцептор, и я не хочу это менять. Может ли кто-нибудь осветить меня на этом?

API: http://weitz.de/hunchentoot/#session-cookie-name

Вот реализация в источнике:

 (defgeneric session-cookie-name (acceptor)                                          
    (:documentation "Returns the name \(a string) of the cookie \(or the              
    GET parameter) which is used to store a session on the client side.                 
    The default is to use the string \"hunchentoot-session\", but you can               
    specialize this function if you want another name."))                               

 (defmethod session-cookie-name ((acceptor t))
    "hunchentoot-session")

1 Ответ

3 голосов
/ 21 января 2010

Создайте подкласс и специализируйте таким образом:

(defclass my-acceptor (hunchentoot:acceptor) ())

(defmethod session-cookie-name ((acceptor my-acceptor)) 
  "my-session")

Функция все еще принимает акцептор, теперь это просто ваш акцептор.

...