我正在使用 Grails v5。我有一个控制器,其中有类似 -
的 defaultActionimport grails.plugin.springsecurity.annotation.Secured
class SecureController {
static defaultAction = "list"
@Secured('ROLE_ADMIN')
def list() {
render 'Secure access only'
}
}
对于非管理员用户,当我访问 http://localhost:8080/app/secure/list URL 时,我会收到预期的访问被拒绝错误。但是当访问 http://localhost:8080/app/secure 时,我就可以访问列表页面。 这应该会让我的访问被拒绝,因为默认操作是列表,非管理员用户不允许。
当我将代码修改为-
import grails.plugin.springsecurity.annotation.Secured
class SecureController {
@Secured('ROLE_ADMIN')
def index() {
redirect action: 'list'
}
@Secured('ROLE_ADMIN')
def list() {
render 'Secure access only'
}
}
然后,非管理员用户的访问权限均被拒绝。
看起来 Grails spring 安全核心插件的安全注释无法与 defaultAction 一起使用。
是我做错了什么,还是有其他建议。请分享。谢谢!
在 spring-security-core-plugin 修复此问题之前,您可以使用索引操作重定向到列表操作。这样功能就可以按预期工作。
import grails.plugin.springsecurity.annotation.Secured
class SecureController {
@Secured('ROLE_ADMIN')
def index() {
redirect action: 'list'
}
@Secured('ROLE_ADMIN')
def list() {
render 'Secure access only'
}
}
现在,非管理员用户访问的两个 URL 均被拒绝。