【问题标题】:Exception While Using Rest API developed using JAX-RS Plugin with Spring Security Core Plugin使用带有 Spring Security Core 插件的 JAX-RS 插件开发的 Rest API 时出现异常
【发布时间】:2016-03-09 05:51:29
【问题描述】:

我正在研究 Grails 应用程序。我使用 Jaxr 插件创建了 RestApi。后来我添加了 Spring Security Core Plugin 来授权和验证我的资源。但是添加这个插件后,我的 Rest API 停止工作,我得到了这个异常:

org.springframework.security.access.AccessDeniedException: Access is denied
at grails.plugin.springsecurity.access.vote.AuthenticatedVetoableDecisionManager.decide(AuthenticatedVetoableDecisionManager.java:47)
at grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.java:53)
at grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.java:82)
at org.grails.jaxrs.web.JaxrsFilter.doFilterInternal(JaxrsFilter.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)

我认为,这是由于 Spring Security Core PlugIn 不允许此 URL。所以我在静态映射中也添加了这个 URL,如下所示:

grails.plugin.springsecurity.controllerAnnotations.staticRules = [
......

'/MediaSenseEvents/SessionEvents': ['permitAll'],

.....
]

但在那之后它也应该允许这个 URL,但我仍然遇到这个问题。有人可以指导我吗?我需要做其他事情吗?还是有什么问题?

我们将非常感谢您的指导 :)

【问题讨论】:

    标签: java spring-security jersey jax-rs grails-plugin


    【解决方案1】:

    Grails jax-rs 插件默认映射到 JaxrsController 的“/api”路径(在 JaxrsUrlMappings 中)。所以尝试在你的静态规则中启用“/api/**”路径。

    【讨论】:

    • 我在插件的配置文件中更改了默认路径。在使用具有相同 URL 的 spring 安全核心之前,它已经开箱即用。
    猜你喜欢
    • 2014-11-13
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-24
    • 2016-03-23
    • 2012-09-29
    • 2014-08-19
    相关资源
    最近更新 更多