![](/img/trans.png)
[英]What is the correct way to get the logged user via spring security (angularjs)
[英]How to get a custom user logged via InMemoryAuthentication with Spring Security?
我有一個使用Spring Security保護的Spring MVC Web應用程序,我正在編寫測試。 我很難在SpringContextHolder中獲取Spring Security檢索到的一個(自定義)用戶。 一旦我的用戶被“插入”(java配置),其中:
auth.inMemoryAuthentication().getUserDetailsService().createUser(myCustomUser);
然后,我可以創建相關的令牌(UsernamePasswordAuthenticationToken)並要求Spring使用此令牌對我的用戶進行身份驗證。 問題是Spring不檢索自定義用戶實例,而是檢索其User類的實例。 當Spring在以下方法中查找這樣的用戶時(來自Spring的InMemoryUserDetailsManager):
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
UserDetails user = users.get(username.toLowerCase());
if (user == null) {
throw new UsernameNotFoundException(username);
}
return new User(user.getUsername(), user.getPassword(), user.isEnabled(), user.isAccountNonExpired(),
user.isCredentialsNonExpired(), user.isAccountNonLocked(), user.getAuthorities());
}
它使用我的配置提供的詳細信息實例化一個新用戶。
我沒有看到讓InMemoryUserDetailsManager直接返回通過“getUserDetailsService(。。createUser”調用發送給他的內容的問題但是必須有一個......不管怎么說,我可能在這里做錯了,任何想法?
像建議的那樣,我最終編寫了一個自定義的InMemoryUserDetailsManager
,我用它提供了我的Spring Security配置。
對於任何想知道的人來說,這似乎是唯一的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.