我将Grails 2.2.4与Shiro插件1.1.4一起使用,并希望将Cookie标记为安全,以便会话信息不会通过http发送。
我正在寻找grails设置此设置的方式,通常是shiro.ini
securityManager.sessionManager.sessionIdCookie.secure = true
打开JIRA问题来跟踪此问题: http://jira.grails.org/browse/GPSHIRO-76
答案 0 :(得分:3)
另一种选择是在BootStrap中修补servletContext的sessionCookieConfig:
class BootStrap {
def init = { servletContext ->
servletContext.sessionCookieConfig.secure = true
}
}
注意:该选项导致grails 2.2.4集成测试因AbstractMethodError而失败。
Error Error executing script TestApp: org.springframework.mock.web.MockServletContext.getSessionCookieConfig()Ljavax/servlet/SessionCookieConfig;
java.lang.AbstractMethodError: org.springframework.mock.web.MockServletContext.getSessionCookieConfig()Ljavax/servlet/SessionCookieConfig;
at BootStrap$_closure1.doCall(BootStrap.groovy:44)
at grails.util.Environment.evaluateEnvironmentSpecificBlock(Environment.java:308)
...
答案 1 :(得分:1)
您可以通过shiroSecurityManager
bean设置此项。例如,在BootStrap中:
def shiroSecurityManager
def init = { servletContext ->
shiroSecurityManager.sessionManager.sessionIdCookie.secure = true
...
}
答案 2 :(得分:1)
您可以将ini设置放在以下块中 在Config.groovy中:
security {
shiro {
filter.config = """
[main]your ini settings
[urls]your ini settings
"""
}
}
答案 3 :(得分:0)
grails install-templates
src/templates/war/web.xml
,使其中包含带有cookie-config的session-config:<session-config> <cookie-config> <secure>true</secure> </cookie-config> </session-config>