91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • 如何解決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

白城市| 工布江达县| 师宗县| 上蔡县| 防城港市| 上饶县| 新乐市| 三原县| 云和县| 凯里市| 芮城县| 绥中县| 海阳市| 招远市| 宜昌市| 遂平县| 泸州市| 北碚区| 周至县| 屏山县| 邢台县| 扎赉特旗| 伊春市| 闽侯县| 朝阳区| 饶阳县| 河津市| 息烽县| 临沂市| 镇沅| 陆河县| 佳木斯市| 闵行区| 建始县| 林口县| 区。| 阜宁县| 海丰县| 南涧| 宁化县| 廉江市|