簡體   English   中英

getPrincipal() 方法返回匿名用戶

[英]getPrincipal() method returns anonymous user

我正在嘗試通過 spring 安全方法獲取連接的用戶

public static User getConnectedUser() {
    Authentication auth = SecurityContextHolder.getContext().getAuthentication();
    User currentUser=auth.getPrincipal();
}

當我使用 postman 從 webservice get 方法調用此方法時,即使我已登錄,它也會返回anonymousUser。這是我的 spring 安全配置:

<http auto-config="true" use-expressions="true">
    <intercept-url pattern="/app/admin/**" access="hasRole('ROLE_ADMIN')"/>
    <intercept-url pattern="/app/passwordHint*" access="hasAnyRole('ROLE_USER','ROLE_ADMIN','ROLE_ANONYMOUS')"/>
    <intercept-url pattern="/app/requestRecoveryToken*" access="hasAnyRole('ROLE_USER','ROLE_ADMIN','ROLE_ANONYMOUS')" />
    <intercept-url pattern="/app/updatePassword*" access="hasAnyRole('ROLE_USER','ROLE_ADMIN','ROLE_ANONYMOUS')" />
    <intercept-url pattern="/app/signup*" access="hasAnyRole('ROLE_USER','ROLE_ADMIN','ROLE_ANONYMOUS')"/>
    <intercept-url pattern="/app/**" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')"/>
    <form-login login-page="/login" authentication-failure-url="/login?error=true" login-processing-url="/j_security_check"/>
    <remember-me user-service-ref="userDao" key="e37f4b31-0c45-11dd-bd0b-0800200c9a66"/>
    <custom-filter ref="ajaxTimeoutRedirectFilter" after="EXCEPTION_TRANSLATION_FILTER"/>
</http>

即使我將這一行<intercept-url pattern="/*" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')"/>到上述配置中,它<intercept-url pattern="/*" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')"/>返回anonymousUser。

這是我從郵遞員那里請求的網址。

http://localhost:8080/myApp/services/api/seal/

您的intercept-url都不匹配,因為您的路徑以services開頭,而不是以app開頭。

如果您的上下文根是myApp ,您的配置應該是:

<intercept-url pattern="/services/**" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')"/> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM