4

我正在使用带有 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

4

4 回答 4

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)
        ...
于 2013-10-28T21:39:10.400 回答
2

您可以通过shiroSecurityManagerbean 进行设置。例如,在 BootStrap 中:

def shiroSecurityManager

def init = { servletContext ->
    shiroSecurityManager.sessionManager.sessionIdCookie.secure = true
    ...
}
于 2013-10-25T22:02:43.307 回答
1

您可以将您的 ini 设置放在 Config.groovy 中的以下块中:

   security {
     shiro {
        filter.config = """
                       [main]your ini settings
                       [urls]your ini settings 
                       """
     }
   }
于 2013-11-28T19:28:55.387 回答
0
  1. 如果您还没有模板,请在您的应用程序中安装模板。 grails install-templates
  2. 编辑src/templates/war/web.xml,使其包含带有 cookie-config 的 session-config:
    <会话配置>
        <cookie 配置>
            <安全>真</安全>
        </cookie-config>
    </会话配置>
于 2013-10-28T21:29:39.050 回答