亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • 如何解決SpringSecurity自定義AuthenticationProvider無法@Autowire的問題

如何解決SpringSecurity自定義AuthenticationProvider無法@Autowire的問題

發布時間:2021-12-20 12:31:39 來源:億速云 閱讀:425 作者:小新 欄目:開發技術

這篇文章主要介紹了如何解決SpringSecurity自定義AuthenticationProvider無法@Autowire的問題,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

自定義AuthenticationProvider無法@Autowire的解決

在AuthenticationProvider中使用@Autowired注入時始終報Null問題

找了半天發現應該在SecurityConfig配置類中

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter{

在設置AuthenticationProvider時

應該使用@Bean的方式設置

@Bean
    CustomAuthenticationProvider customAuthenticationProvider() {
        return new CustomAuthenticationProvider();
    }   
@Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(customAuthenticationProvider());
    }

之前的錯誤的設置方式是

@Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(new CustomAuthenticationProvider());
    }

好了,這就可以實現AuthenticationProvider時自由的使用@Autowired了

自定義AuthenticationProvider的簡單例子

xml 配置

<authentication-manager>
        <authentication-provider ref="myAuthenticationProvider" />
    </authentication-manager>
 
  <beans:bean id="userDetailsService" class="net.mantis.security.auth.NMUserDetailsService"/>
  <beans:bean id="myAuthenticationProvider" class="net.mantis.security.auth.MyAuthenticationProvider">
       <beans:property name="userDetailsService">
            <beans:bean class="net.mantis.security.auth.NMUserDetailsService">            
            </beans:bean>
        </beans:property>
  </beans:bean>

net.mantis.security.auth.MyAuthenticationProvider

public class MyAuthenticationProvider implements AuthenticationProvider {
 
    UserDetailsService userDetailsService;
    public Authentication authenticate(Authentication authentication)
            throws AuthenticationException {
         //username
        System.out.println("user name: "+authentication.getName());
        //password
        System.out.println("password: "+authentication.getCredentials());
        System.out.println("getPrincipal: "+authentication.getPrincipal());
        System.out.println("getAuthorities: "+authentication.getAuthorities());
        System.out.println("getDetails: "+authentication.getDetails());
        UserDetails userDetails = (UserDetails)this.userDetailsService.loadUserByUsername(authentication.getName());
      
        UsernamePasswordAuthenticationToken result = new UsernamePasswordAuthenticationToken(
                userDetails, authentication.getCredentials(),userDetails.getAuthorities());
        return result;
    }
    public boolean supports(Class authentication) {
         return true;
    }
    public void setUserDetailsService(UserDetailsService userDetailsService){
        this.userDetailsService = userDetailsService;
    }
}

net.mantis.security.auth.NMUserDetailsService

public class NMUserDetailsService implements UserDetailsService {
    @Override
    public UserDetails loadUserByUsername(String userName)
            throws UsernameNotFoundException {
        ArrayList list = new ArrayList();
        list.add(new SimpleGrantedAuthority("ROLE_SUPERVISOR"));
        User details = new User("rod", "koala", list);
        return details;
    }
}

感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何解決SpringSecurity自定義AuthenticationProvider無法@Autowire的問題”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

朝阳区| 沅陵县| 新干县| 广汉市| 大荔县| 临桂县| 清流县| 杨浦区| 松原市| 济源市| 淮北市| 大港区| 乐至县| 汕头市| 香河县| 子洲县| 盘山县| 沙洋县| 福海县| 霞浦县| 渭南市| 汾阳市| 鲁山县| 咸阳市| 大埔区| 务川| 龙胜| 柳林县| 新沂市| 兖州市| 唐山市| 尼勒克县| 蚌埠市| 兴山县| 洪江市| 永福县| 监利县| 甘南县| 喀喇| 汕尾市| 闵行区|