我需要從Grails服務中訪問會話cookie(JSESSIONID)。我知道如何從Servlet訪問它。如何在Grails服務中訪問Session Cookie?
編輯:我使用Grails JAXRS插件http://grails.org/plugin/jaxrs從REST請求中訪問資源。
如何在Grails服務中訪問Session Cookie JSESSIONID?
我需要從Grails服務中訪問會話cookie(JSESSIONID)。我知道如何從Servlet訪問它。如何在Grails服務中訪問Session Cookie?
編輯:我使用Grails JAXRS插件http://grails.org/plugin/jaxrs從REST請求中訪問資源。
如何在Grails服務中訪問Session Cookie JSESSIONID?
如果您需要有在您的新澤西州的REST資源的會話的接入,則需要請求參數添加到資源的方法,如:
@POST
public createData(@Context HttpServletRequest request) {
def session = request.session
}
我知道你可以在服務中使用SecurityRequestHolder.request.session
和src文件(如果您使用的是SpringSecurity)。我不確定它在課堂上的表現如何。老實說,我會找到另一種方式。
我已經瞭解到,當我認爲我需要從其他地方訪問會話時,除了控制器外,我有一個架構問題。那時我停下來,重新考慮我在做什麼,爲什麼我這麼做。通常Grails提供了一種更好的方式來完成我認爲我需要處理的內容。正如@JoshuaMoore指出的那樣,使用會話的最佳方法是將會話值傳遞給控制器中的類實例或服務。
這可能不是您想要的答案,但從長遠來看,調試,測試和維護將會更容易。你會很高興你重新設計它。
您的服務會話範圍或單身? –
@JoshuaMoore我還沒有選擇範圍。 – confile
所以單身(默認)。只要從你的控制器中一起通過會話。 def someServiceMethod(session,arg1,arg2,...) –