我正在使用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等的其他规则。
我无法弄清楚为什么在这种情况下不应用样式。有什么想法吗?
答案 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')
}
这适合我。