Grails 过滤器禁用 style/css
Grails filter disables style/css
我做了一个安全过滤器,跟着书"Beginning Grails, Groovy and Griffon"。
看起来功能正常,但由于某种原因,过滤器允许在没有登录用户的情况下打开的唯一页面缺少任何样式。只是文本字段、标签和按钮。简单的 capthca 插件也可以正常工作,并且可以正常加载验证码图像。
页面截图如下:
package collab.todo
class SecurityFilters {
def filters = {
securityFilters(controller:'*', action:'*') {
before = {
if(!session.user &&
(!controllerName.equals("user") && !actionName.equals("login")
&& !actionName.equals("captcha")
&&!actionName.equals("register")) ){
redirect(controller: "user", action: "login")
}
}
after = { Map model ->
}
afterView = { Exception e ->
}
}
}
}
您的页面未显示任何资产(样式或图像)的原因是因为在最新版本的 Grails (2.3+) 中,资产由 /assets/**
URL.
Grails 的早期版本(您的书可能就是为此而写的)未使用此插件,因此这些资产不可过滤。
要解决此问题,您可以使用过滤器的排除属性(例如 uriExclude
)。您可以在优秀的 Grails documentation.
中阅读更多相关信息
这是您的过滤器示例 uriExclude
:
package collab.todo
class SecurityFilters {
def filters = {
securityFilters(controller:'*', action:'*', uriExclude: '/assets/**') {
before = {
if(!session.user &&
(!controllerName.equals("user") && !actionName.equals("login")
&& !actionName.equals("captcha")
&&!actionName.equals("register")) ){
redirect(controller: "user", action: "login")
}
}
after = { Map model ->
}
afterView = { Exception e ->
}
}
}
}
此更改将排除将您的过滤器应用于 /assets/
URI 下的任何内容,并且您的 styles/images 现在应该会出现。
我做了一个安全过滤器,跟着书"Beginning Grails, Groovy and Griffon"。
看起来功能正常,但由于某种原因,过滤器允许在没有登录用户的情况下打开的唯一页面缺少任何样式。只是文本字段、标签和按钮。简单的 capthca 插件也可以正常工作,并且可以正常加载验证码图像。
页面截图如下:
package collab.todo
class SecurityFilters {
def filters = {
securityFilters(controller:'*', action:'*') {
before = {
if(!session.user &&
(!controllerName.equals("user") && !actionName.equals("login")
&& !actionName.equals("captcha")
&&!actionName.equals("register")) ){
redirect(controller: "user", action: "login")
}
}
after = { Map model ->
}
afterView = { Exception e ->
}
}
}
}
您的页面未显示任何资产(样式或图像)的原因是因为在最新版本的 Grails (2.3+) 中,资产由 /assets/**
URL.
Grails 的早期版本(您的书可能就是为此而写的)未使用此插件,因此这些资产不可过滤。
要解决此问题,您可以使用过滤器的排除属性(例如 uriExclude
)。您可以在优秀的 Grails documentation.
这是您的过滤器示例 uriExclude
:
package collab.todo
class SecurityFilters {
def filters = {
securityFilters(controller:'*', action:'*', uriExclude: '/assets/**') {
before = {
if(!session.user &&
(!controllerName.equals("user") && !actionName.equals("login")
&& !actionName.equals("captcha")
&&!actionName.equals("register")) ){
redirect(controller: "user", action: "login")
}
}
after = { Map model ->
}
afterView = { Exception e ->
}
}
}
}
此更改将排除将您的过滤器应用于 /assets/
URI 下的任何内容,并且您的 styles/images 现在应该会出现。