0

我有以下問題: 我要訪問內部SecurityContextHolder.getContext().getAuthenticationSpring Security沒有保存認證

的代碼我用來保存用戶的認證的認證對象是以下; SecurityContextHolder.getContext().setAuthentication(new UsernamePasswordAuthenticationToken(username, password));

我如何使用它如下;

我用localhost:8080/api/login/<username>/<password>

發送一個請求,然後我想檢索郵件列表使用localhost:8080/api/messages

當我打印出來的認證對象,它總是返回一個匿名用戶,雖然登錄的用戶我在我的登錄方法中設置了身份驗證對象。

+0

你設置和獲取在同一認證線? SecurityContextHolder「將給定的SecurityContext與當前執行線程關聯起來」 – Ayman

+0

不,我不是,但是Spring Security不應該保存誰登錄?否則,每當有人提出請求時,我都需要對用戶進行身份驗證。 – Jelle

+1

正確,但Spring Security應該自動執行此操作,而不必手動註冊AuthenticationToken。我建議你檢查一下在線的一些教程。 – Ayman

回答

1

如果你想驗證用戶手動看起來像下面這樣:

創建令牌:

Authentication authentication = new UsernamePasswordAuthenticationToken(user, user.getPassword(), user.getAuthorities()); 

身份驗證:

SecurityContextHolder.getContext().setAuthentication(authentication); 
+0

我已經使用過了,當我嘗試檢索身份驗證時,它會返回一個匿名用戶(當我正在進行另一個REST調用時) – Jelle