【问题标题】:Spring Security permitAll doesn't workSpring Security permitAll 不起作用
【发布时间】:2016-02-16 19:42:24
【问题描述】:

我正在使用 Spring Security。我有一个控制器,其中任何用户都必须可以访问某些方法,无论他是否经过身份验证,某些方法必须只能访问通过 JWT 令牌进行身份验证的用户。我已经用 acces="permitAll()" 配置了一些模式,但它似乎不起作用。如果我尝试访问 localhost:8080/name-of-the-app/services/public/whatever 我得到 401,我会在我的 MobileJWTAuthenticationEntryPoint.commence 方法中返回它。你能帮助我吗?

这是我的 context.xml:

<security:global-method-security pre-post-annotations="enabled"/>

<security:http entry-point-ref="mobileJWTAuthenticationEntryPoint"
               authentication-manager-ref="mobileJWTAuthenticationManager"
               create-session="stateless"
               use-expressions="true">
    <security:custom-filter ref="mobileJWTAuthenticationFilter" position="FORM_LOGIN_FILTER" />
    <security:intercept-url pattern="/services/public/**" access="permitAll()"/>
    <security:intercept-url pattern="/services/restAPI/**" access="isAuthenticated()" />
</security:http>

<bean id="mobileJWTAuthenticationEntryPoint" class="co.amleto.server.services.security.MobileJWTAuthenticationEntryPoint"/>

<bean id="mobileJWTAuthenticationFilter" class="co.amleto.server.services.security.MobileJWTAuthenticationFilter" >
    <constructor-arg name="authenticationManager" ref="mobileJWTAuthenticationManager"/>
    <constructor-arg name="entryPoint" ref="mobileJWTAuthenticationEntryPoint"/>
</bean>

<bean id="mobileJWTAuthenticationProvider" class="co.amleto.server.services.security.MobileJWTAuthenticationProvider"/>

<security:authentication-manager alias="mobileJWTAuthenticationManager">
    <security:authentication-provider ref="mobileJWTAuthenticationProvider"/>
</security:authentication-manager>

编辑:我的整个代码都受此启发:http://massimilianosciacco.com/spring-security-jwt-authentication。在 AuthenticationFilter 中,我已将 throws 与 return 进行了切换。现在无论我点击哪个网址,我都会得到空白页。

【问题讨论】:

  • spring-security 的版本是多少?
  • Spring:4.2.2.RELEASE Spring Security:4.0.3.RELEASE
  • 我认为您使用的是旧版 Spring Security 的配置。尝试使用 access="IS_AUTHENTICATED_ANONYMOUSLY" 并为经过身份验证的用户放置 ROLE_USER。尝试阅读更多用户指南
  • 但是我的配置中的哪个元素表明它是旧的?
  • 本节将为您解释3.2.x和4.x版本的区别:docs.spring.io/spring-security/site/migrate/current/3-to-4/…

标签: spring spring-mvc spring-security


【解决方案1】:

问题解决了。正如我在编辑中提到的,我的代码基于 OP 中添加的链接中的解决方案。自定义过滤器的代码错误:在每种情况下都会引发异常。解决方案是调用chain.doFilter(request, response)并从doFilter方法返回以允许匿名url调用。

【讨论】:

    猜你喜欢
    • 2018-01-31
    • 2017-08-20
    • 2019-09-27
    • 2020-10-02
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    相关资源
    最近更新 更多