簡體   English   中英

如何使用Spring Security通過InMemoryAuthentication記錄自定義用戶?

[英]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直接返回通過“getUserDetailsS​​ervice(。。createUser”調用發送給他的內容的問題但是必須有一個......不管怎么說,我可能在這里做錯了,任何想法?

像建議的那樣,我最終編寫了一個自定義的InMemoryUserDetailsManager ,我用它提供了我的Spring Security配置。
對於任何想知道的人來說,這似乎是唯一的方法。

暫無
暫無

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

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