【问题标题】:Grails Spring Security Static RulesGrails Spring Security 静态规则
【发布时间】:2015-02-05 18:09:41
【问题描述】:

我希望所有用户在访问我的应用程序之前都经过身份验证。以下是 Config.groovy 中的设置:

grails.plugin.springsecurity.controllerAnnotations.staticRules=[
    "/**": ["ROLE_ADMIN"],
    "/login/auth": ["permitAll"]
]

我放 "/login/auth": ["permitAll"] 的原因是任何用户都有机会登录并通过身份验证。但是,当我访问 http://localhost:8080/myapp/ 时,它会重定向到 http://localhost:8080/myapp/login/auth 并引发错误:页面未正确重定向。你能告诉我在这里犯了什么错误吗?

【问题讨论】:

  • 看看@monksy 的reply - 如果你想使用 Secured 注释,我认为这是正确的解决方案。

标签: spring grails spring-security


【解决方案1】:

首先你必须告诉 spring security 你将使用什么类型的映射。

grails.plugins.springsecurity.securityConfigType = 'InterceptUrlMap'

第二个'permitAll'改为'IS_AUTHENTICATED_ANONYMOUSLY' 第三,如果 spring security 找到/** 他没有在这条线下看到另一个。所以你的代码一定是这样的:

grails.plugins.springsecurity.securityConfigType = SecurityConfigType.InterceptUrlMap
grails.plugins.springsecurity.interceptUrlMap = [
"/login/auth": ["permitAll"],
 "/**": ["ROLE_ADMIN"]
]

【讨论】:

  • 非常感谢。这是解决方案。但是,在使用 SecurityConfigType.InterceptUrlMap 时出现以下错误:错误:“securityConfigType”属性必须是“Annotation”、“Requestmap”或“InterceptUrlMap”之一,或者未指定默认为“Annotation”;将值设置为“注释”。因此,我已将其更改为“InterceptUrlMap”并且它起作用了。
  • @TrongBang 设置我的答案已回答 :)
  • 他使用 IntercepUrlMap 安全类型并不是绝对必要的。您的方法确实有效,但仍然可以使用注释。
  • 在他的问题中,他想使用 InterceptUrlMapping。
【解决方案2】:

Koloritnij 的解决方案是正确的。但是,在使用 SecurityConfigType.InterceptUrlMap 时会抛出以下错误:

ERROR: the 'securityConfigType' property must be one of
'Annotation', 'Requestmap', or 'InterceptUrlMap' or left unspecified
to default to 'Annotation'; setting value to 'Annotation'

我已将其更改为仅“InterceptUrlMap”并且它有效:

grails.plugins.springsecurity.securityConfigType = 'InterceptUrlMap'
grails.plugins.springsecurity.interceptUrlMap = [
    "/login/auth": ["permitAll"],
    "/**": ["ROLE_ADMIN"]
]

【讨论】:

    【解决方案3】:

    TrongBang 和 Koloritnij 走在正确的轨道上。但是在您的问题的背景下,它们并不完全正确。他们建议您切换到不同的身份验证设置。 (这会起作用,但它不能解决您的设置环境中的问题。)

    如果您希望保留注释,则必须调用 OAuth 使用的控制器。

    ‘/springSecurityOAuth/**’: [‘permitAll’]

    插件映射该控制器路径,但静态规则仍会从中解释控制器和方法。 我花了一些时间才发现这一点。我遇到了同样的问题,我在博客中对此进行了讨论(其中包含有关 Spring Security Oauth 插件如何工作的一些详细信息。

    http://theexceptioncatcher.com/blog/2015/04/spring-security-oauth-the-missing-instructions/

    【讨论】:

      猜你喜欢
      • 2012-11-19
      • 2013-05-20
      • 2017-05-02
      • 2019-05-09
      • 2015-08-21
      • 1970-01-01
      • 2017-05-18
      • 2012-02-19
      • 2012-09-09
      相关资源
      最近更新 更多