2010-01-21 3 views
4

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

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

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") 

ответ

3

сделать подкласс и специализируются именно так:

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

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

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

+0

Спасибо, это работает. Если кто-то экспериментирует, убедитесь, что вы определили метод на hunchentoot: session-cookie-name – MarcusBooster

Смежные вопросы