我正在使用Spring Security。我有一個控制器,其中有些方法必須可以由任何用戶訪問,無論他是否經過身份驗證,有些方法只能訪問使用JWT令牌進行身份驗證的用戶。我用acces =「permitAll()」配置了一些模板,但它似乎不起作用。如果我嘗試訪問本地主機:8080 /名稱的應用程序/服務/公共/無論我得到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中,我使用return來切換投擲。現在我得到空白頁面,無論我打哪個網址。
spring-security的版本是什麼? – Spartan
Spring:4.2.2.RELEASE Spring Security:4.0.3.RELEASE – Jacek
我認爲您使用的是舊版本Spring Security的配置。嘗試使用'access =「IS_AUTHENTICATED_ANONYMOUSLY」',併爲經過身份驗證的用戶放置ROLE_USER。嘗試閱讀更多的用戶指南 – Spartan