Grails spring 安全插件的安全注释不适用于 Grails defaultAction

问题描述 投票:0回答:1

我正在使用 Grails v5。我有一个控制器,其中有类似 -

的 defaultAction
import 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 一起使用。

是我做错了什么,还是有其他建议。请分享。谢谢!

grails spring-security grails-spring-security grails-5
1个回答
0
投票

在 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 均被拒绝。

© www.soinside.com 2019 - 2024. All rights reserved.