我正在使用带有 Shiro 插件 1.1.4 的 Grails 2.2.4,并希望将 cookie 标记为安全,以便不会通过 http 发送会话信息。
我正在寻找设置此设置的 grails 方式,通常在 shiro.ini
securityManager.sessionManager.sessionIdCookie.secure = true
打开 JIRA 问题以跟踪此问题:http: //jira.grails.org/browse/GPSHIRO-76
我正在使用带有 Shiro 插件 1.1.4 的 Grails 2.2.4,并希望将 cookie 标记为安全,以便不会通过 http 发送会话信息。
我正在寻找设置此设置的 grails 方式,通常在 shiro.ini
securityManager.sessionManager.sessionIdCookie.secure = true
打开 JIRA 问题以跟踪此问题:http: //jira.grails.org/browse/GPSHIRO-76
另一种选择是从 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)
...
您可以通过shiroSecurityManager
bean 进行设置。例如,在 BootStrap 中:
def shiroSecurityManager
def init = { servletContext ->
shiroSecurityManager.sessionManager.sessionIdCookie.secure = true
...
}
您可以将您的 ini 设置放在 Config.groovy 中的以下块中:
security {
shiro {
filter.config = """
[main]your ini settings
[urls]your ini settings
"""
}
}
grails install-templates
src/templates/war/web.xml
,使其包含带有 cookie-config 的 session-config:<会话配置> <cookie 配置> <安全>真</安全> </cookie-config> </会话配置>