DanielC
10/02/2025, 8:30 PMjdaugherty
10/02/2025, 11:44 PMDanielC
10/03/2025, 9:10 PMjdaugherty
10/03/2025, 9:28 PMDanielC
10/06/2025, 7:24 PMgrails {
springsecurity {
filterChain {
chainMap = [
[pattern:'/assets/**', filters:'nosniffFilter']
]
}
}
}jdaugherty
10/07/2025, 7:25 PM``` Map assetsConfig = grailsApplication.config.getProperty('grails.assets', Map, [:])
def mapping = assetsConfig.containsKey('mapping') ? assetsConfig.mapping?.toString() : 'assets'
assetPipelineFilter(FilterRegistrationBean<SecuredAssetPipelineFilter>) {
order = 101
filter = new SecuredAssetPipelineFilter()
if(!mapping) {
urlPatterns = ["/*".toString()]
} else {
urlPatterns = ["/${mapping}/*".toString()]
}
}```In my case, I override the asset pipeline filter to secure assets:
```class SecuredAssetPipelineFilter extends AssetPipelineFilter {
@Override
void doFilterInternal(final HttpServletRequest request, final HttpServletResponse response, final FilterChain chain) throws IOException, ServletException {
boolean wasCommitted = response.committed
super.doFilterInternal(request, response, chain)
if(!wasCommitted && response.committed) { //Reset the flash scope
GrailsWebRequest webRequest = WebUtils.retrieveGrailsWebRequest()
if(!webRequest) {
throw new IllegalStateException("Could not locate Grails Web Request.")
}
FlashScope flash = webRequest.getAttributes().getFlashScope(request)
flash.putAll(flash.now)
}
}
}```
jdaugherty
10/07/2025, 7:26 PM