Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在使用Grails Spring安全插件时为不存在的页面返回404_Grails_Spring Security - Fatal编程技术网

如何在使用Grails Spring安全插件时为不存在的页面返回404

如何在使用Grails Spring安全插件时为不存在的页面返回404,grails,spring-security,Grails,Spring Security,我正在使用Grails3.3.9和SpringSecurity核心插件3.2.3来保护网站 我的问题是,现在用户收到的是403,而不是404 如果页面不存在,如何确保返回404 not FOUND http状态码 grails.plugin.springsecurity.securityConfigType = "Annotation" grails.plugin.springsecurity.userLookup.userDomainClassName = 'com.website.User

我正在使用Grails3.3.9和SpringSecurity核心插件3.2.3来保护网站

我的问题是,现在用户收到的是403,而不是404

如果页面不存在,如何确保返回404 not FOUND http状态码


grails.plugin.springsecurity.securityConfigType = "Annotation"
grails.plugin.springsecurity.userLookup.userDomainClassName = 'com.website.User'
grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'com.website.UserRole'
grails.plugin.springsecurity.authority.className = 'com.website.Role'
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
  [pattern: '/',               access: ['permitAll']],
    [pattern: '/error',          access: ['permitAll']],
  [pattern: '/404',            access: ['permitAll']],
    [pattern: '/index',          access: ['permitAll']],
    [pattern: '/index.gsp',      access: ['permitAll']],
    [pattern: '/shutdown',       access: ['permitAll']],
    [pattern: '/assets/**',      access: ['permitAll']],
    [pattern: '/**/js/**',       access: ['permitAll']],
    [pattern: '/**/css/**',      access: ['permitAll']],
    [pattern: '/**/images/**',   access: ['permitAll']],
    [pattern: '/**/favicon.ico', access: ['permitAll']],
        [pattern: '/**',   access: ['ROLE_SUPER_ADMIN']]
]

grails.plugin.springsecurity.filterChain.chainMap = [
    [pattern: '/**/js/**',       filters: 'none'],
    [pattern: '/**/css/**',      filters: 'none'],
    [pattern: '/**/images/**',   filters: 'none'],
    [pattern: '/**/favicon.ico', filters: 'none'],
    [pattern: '/**',             filters: 'JOINED_FILTERS']
]
在我的url映射中,我有

class UrlMappings {


    static mappings = {


        name root: "/" (controller: "search", action: "create")


        // DO NOT DELETE, we need this for acJson and other actions.
        "/$controller/$action?/$id?(.$format)?"{
            constraints {
                // apply constraints here
            }
        }

        "500"(view:'/error')
        "404"(view:'/404')

    }
你需要一个控制器

class UrlMappings {

    static mappings = {
        "/$controller/$action?/$id?(.$format)?"{
            constraints {
                // apply constraints here
            }
        }

        "/"(controller: "portal", action: "index")
        "500"(controller: "error", action: "page500")
        "404"(controller: "error", action: "page404")
    }

}

“你需要一个控制器”-我不认为这是真的。这并不能解决问题。如果以这种方式实现错误处理,则始终会通过403将您重定向到登录页面,即使该页面不存在。我如何映射404也是有效的,我不知道为什么通过控制器映射404会有所不同。看
class ErrorController {
    def page404() { render view: "page404" }
}