中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

江都市| 镇坪县| 崇仁县| 英德市| 宝应县| 鞍山市| 连云港市| 南汇区| 宁海县| 乌兰察布市| 普陀区| 杭州市| 略阳县| 湖口县| 庐江县| 嘉义市| 周口市| 同德县| 吉林省| 遂宁市| 丰台区| 溧阳市| 太康县| 修文县| 仁布县| 耿马| 肇州县| 龙南县| 黄石市| 恩施市| 云安县| 安陆市| 会昌县| 金华市| 霍州市| 阿坝| 玛沁县| 平顶山市| 海伦市| 攀枝花市| 咸宁市|