自定义denied.gsp样式无法呈现

时间:2014-02-05 15:53:42

标签: css grails layout spring-security gsp

我正在使用spring-security-core插件,并在 /views/login/denied.gsp 下创建了一个自定义 denied.gsp 页面。如果我通过 / login / denied 直接转到页面,我可以看到布局已应用。但是,如果我尝试访问受限制的页面并且我被路由到 denied.gsp ,那么只需渲染确切的html而不处理布局。

<html><head>
        <title>Denied</title>
        <meta name="layout" content="main">
    </head>
    <body>
        <section class="breadcrumb p07">
            <p><a href="/">Home</a> Denied</p>
        </section>
        <section class="content">
            <p>Sorry, you're not authorized to view this page.</p>
        </section>

</body></html>

我将这些设置为false,以便默认情况下所有内容都不会被锁定:

grails.plugin.springsecurity.rejectIfNoRule = false
grails.plugin.springsecurity.fii.rejectPublicInvocations = false

AdminController:

@Secured(['ROLE_ADMIN'])
class AdminController {

    def index() { 

    }
}

例如,我以ROLE_USER身份登录然后转到/ admin,它正确地拒绝了我。然而,它在页面上没有任何样式。

没有关于css,js等的其他规则。

我无法弄清楚为什么在这种情况下不应用样式。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

首先要熟悉这个https://github.com/grails-plugins/grails-spring-security-core/issues/177

作为一种解决方法,我会向您推荐下面提到的步骤。

UrlMappings.groovy修改中:

"500"(controller: "error", action: "denied")

Config.groovy文件覆盖errorPage属性

grails.plugin.springsecurity.adh.errorPage = null

在控制器中添加操作:

def denied() {
    render(view: '/login/denied')
}

这适合我。