【问题标题】:@PreAuthorize Does not restrict user from Access Controller Action@PreAuthorize 不限制用户访问控制器操作
【发布时间】:2015-10-12 13:39:59
【问题描述】:

使用 Grails Spring SecuritySpring Security ACL。 我有一个控制器:

class AdminCompanyController {

  @PreAuthorize("hasRole('ROLE_ADMIN')")
  def create() {
    println("create")
    [company: new Company()]
  }

}

即使只有角色ROLE_USER 的用户也可以访问create() 操作。

我知道我可以使用 spring 安全注释 @Secured 来做到这一点,但我想使用 ACL 来做到这一点。

如何防止没有 ROLE_ADMIN 的用户使用 ACL 访问 create() 操作?

编辑:我使用 Grails 2.4.5 和

    compile ":spring-security-core:2.0-RC5"
    runtime ':spring-security-acl:2.0-RC2'

【问题讨论】:

  • 您是否已将@EnableGlobalMethodSecurity(prePostEnabled = true) 添加到您的安全配置中?
  • 不,我必须把它放在哪里?你能发布一个简短的例子吗?
  • @Mati 记得我想使用 ACL 吗?
  • 这个注解应该启用像@PreAuthorize这样的注解,这也是ACL的一部分。您使用哪个版本的 grails?
  • @Mati 我在我的编辑中发布了它。无法解析 @ EnableGlobalMethodSecurity 的依赖关系。

标签: spring-mvc grails spring-security


【解决方案1】:

@PreAuthorize 必须在服务中使用。在控制器中,您必须使用 @Secured。

【讨论】:

  • 其实可以用在Controllers上
猜你喜欢
  • 2023-03-14
  • 2016-05-27
  • 1970-01-01
  • 2019-11-05
  • 2023-04-07
  • 2013-12-08
  • 2020-02-16
  • 1970-01-01
相关资源
最近更新 更多