如何配置grails和shiro来标记cookie安全?

时间:2013-10-25 21:39:45

标签: security grails session-cookies shiro

我将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

4 个答案:

答案 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)

  1. 如果您还没有模板,请在应用程序中安装模板。 grails install-templates
  2. 编辑src/templates/war/web.xml,使其中包含带有cookie-config的session-config:
  3.     <session-config>
            <cookie-config>
                <secure>true</secure>
            </cookie-config>
        </session-config>