【问题标题】:grails spring-security plugin secures all controllers instead of just ones with @Secured annotationgrails spring-security 插件保护所有控制器,而不仅仅是带有@Secured注解的控制器
【发布时间】:2015-01-28 18:50:11
【问题描述】:

我正在关注tutorials 使用springsecurity 身份验证插件。我正在使用 grails 版本 2.3.8 和 spring-security-core:2.0-RC2。它按预期工作,使用 Secured 注释创建 HelloWorld 控制器:

package basicauthdemo
import grails.plugin.springsecurity.annotation.Secured

class HelloController {
    @Secured(['ROLE_USER'])
    def index() {
    render "Hello World"
    }
}

然后显示登录屏幕。

我的问题是,当我创建另一个没有 @Secured 注释的控制器时。导航到该控制器时,我仍然会看到登录屏幕。 Spring security 现在负责对我的控制器的所有访问,正如我从生成的 web.xml 中的过滤器映射中看到的那样:

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>ERROR</dispatcher>
    <dispatcher>REQUEST</dispatcher>
  </filter-mapping>

如何告诉插件允许开放访问某些控制器而不是其他控制器?我认为这将由 @Secured 注释的存在来确定,但这仅定义了具有控制器权限的角色。

【问题讨论】:

    标签: grails spring-security


    【解决方案1】:

    根据 Spring Security Core 插件的documentation,默认行为是pessimistic lockdown

    ... 然后是任何没有请求映射的 URL(注释、条目 在controllerAnnotations.staticRules 或interceptUrlMap,或一个 Requestmap 实例)将被所有用户拒绝。

    我强烈建议您阅读文档的特定部分,了解如何配置插件以供您使用。通常这将修改rejectIfNoRule 的默认值并配置适当的staticRules

    【讨论】:

      猜你喜欢
      • 2018-01-10
      • 1970-01-01
      • 1970-01-01
      • 2016-10-18
      • 2012-05-30
      • 2016-01-20
      • 1970-01-01
      • 2015-09-04
      • 2011-11-04
      相关资源
      最近更新 更多