亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中bcrypt算法實現(xiàn)密碼加密的方法步驟

 更新時間:2023年08月29日 15:44:31   作者:曾幾何時…  
我們可以在Spring Boot和SSM中實現(xiàn)密碼加密,使用bcrypt算法可以保障密碼的安全性,并且減少了手動編寫哈希函數(shù)的工作量,本文就來詳細的介紹一下,感興趣的可以了解一下

一、SpringBoot和SSM框架均可實現(xiàn)密碼加密的方法

在Spring Boot和SSM中實現(xiàn)密碼加密可以使用bcrypt算法。bcrypt是一種密碼哈希函數(shù),通過將密碼與隨機生成的鹽值進行混合,然后再進行多次迭代的計算,最終生成一個安全的哈希密碼。

下面是使用bcrypt算法實現(xiàn)密碼加密的步驟和代碼示例:

1.在pom.xml文件中添加Spring Security依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

 2.創(chuàng)建一個配置類來配置Spring Security

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService()).passwordEncoder(passwordEncoder());
    }
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/admin/**").hasRole("ADMIN")
            .antMatchers("/user/**").hasAnyRole("USER", "ADMIN")
            .anyRequest().authenticated()
            .and()
            .formLogin().permitAll()
            .and()
            .logout().permitAll();
    }
    @Bean
    public BCryptPasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
    @Bean
    public UserDetailsService userDetailsService() {
        // 返回自定義的UserDetailsService實現(xiàn)類,用于從數(shù)據(jù)庫中獲取用戶信息
        return new UserDetailsServiceImpl();
    }
}

3.創(chuàng)建自定義的UserDetailsService實現(xiàn)類

實現(xiàn)UserDetailsService接口,用于從數(shù)據(jù)庫中獲取用戶信息。

@Service
public class UserDetailsServiceImpl implements UserDetailsService {
    @Autowired
    private UserMapper userMapper;
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        User user = userMapper.findByUsername(username);
        if (user == null) {
            throw new UsernameNotFoundException("User not found");
        }
        return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), getAuthorities(user));
    }
    private Collection<GrantedAuthority> getAuthorities(User user) {
        List<String> roles = user.getRoles();
        List<GrantedAuthority> authorities = new ArrayList<>();
        for (String role : roles) {
            authorities.add(new SimpleGrantedAuthority(role));
        }
        return authorities;
    }
}

4.實現(xiàn)密碼加密

在注冊或更新密碼時,使用BCryptPasswordEncoder類的encode()方法進行密碼加密。

@Autowired
private BCryptPasswordEncoder passwordEncoder;
public void registerUser(User user) {
    // 加密密碼
    String encryptedPassword = passwordEncoder.encode(user.getPassword());
    user.setPassword(encryptedPassword);
    // 保存到數(shù)據(jù)庫
    userMapper.save(user);
}

總結

通過以上步驟,我們可以在Spring Boot和SSM中實現(xiàn)密碼加密。使用bcrypt算法可以保障密碼的安全性,并且減少了手動編寫哈希函數(shù)的工作量。

到此這篇關于Java中bcrypt算法實現(xiàn)密碼加密的方法步驟的文章就介紹到這了,更多相關Java bcrypt密碼加密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spring延遲Bean初始化的實現(xiàn)示例

    Spring延遲Bean初始化的實現(xiàn)示例

    延遲初始化也叫做惰性初始化,指不提前初始化Bean,而是只有在真正使用時才創(chuàng)建及初始化Bean,本文主要介紹了Spring延遲Bean初始化的實現(xiàn)示例,感興趣的可以了解一下
    2024-06-06
  • java ArrayBlockingQueue阻塞隊列的實現(xiàn)示例

    java ArrayBlockingQueue阻塞隊列的實現(xiàn)示例

    ArrayBlockingQueue是一個基于數(shù)組實現(xiàn)的阻塞隊列,本文就來介紹一下java ArrayBlockingQueue阻塞隊列的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • Spring中使用AOP進行事務管理實例

    Spring中使用AOP進行事務管理實例

    這篇文章主要介紹了Spring中使用AOP進行事務管理實例,當在Spring項目中涉及數(shù)據(jù)庫操作時,事務管理是非常重要的,它可以確保數(shù)據(jù)庫操作的一致性和完整性,Spring提供了強大的事務管理功能,可以通過聲明式或編程式兩種方式進行配置,需要的朋友可以參考下
    2023-09-09
  • 30分鐘入門Java8之默認方法和靜態(tài)接口方法學習

    30分鐘入門Java8之默認方法和靜態(tài)接口方法學習

    這篇文章主要介紹了30分鐘入門Java8之默認方法和靜態(tài)接口方法學習,詳細介紹了默認方法和接口,有興趣的可以了解一下。
    2017-04-04
  • 關于yml文件字符串,List,Map的書寫方式并使用@ConfigurationProperties注入配置類

    關于yml文件字符串,List,Map的書寫方式并使用@ConfigurationProperties注入配置類

    這篇文章主要介紹了關于yml文件字符串,List,Map的書寫方式并使用@ConfigurationProperties注入配置類,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 舉例講解Java的RTTI運行時類型識別機制

    舉例講解Java的RTTI運行時類型識別機制

    這篇文章主要介紹了Java的RTTI運行時類型識別機制,包括泛化的Class引用以及類型檢查instanceof等知識點,需要的朋友可以參考下
    2016-05-05
  • Java參數(shù)校驗Validator與@AssertTrue深度解析

    Java參數(shù)校驗Validator與@AssertTrue深度解析

    本文詳細介紹了Java的Validator框架及其@AssertTrue注解的使用,包括環(huán)境準備、基礎注解介紹、實戰(zhàn)示例、@AssertTrue的深入解析、高級特性和最佳實踐建議,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • Java volatile關鍵字特性講解上篇

    Java volatile關鍵字特性講解上篇

    JMM要求保證可見性、原子性、有序性,volatile可以保證其中的兩個,本篇文章具體驗證volatile的可見性,不原子性和禁重排,同時解決volatile的不保證原子性,讓代碼具有原子性
    2022-12-12
  • Java連接Mysql數(shù)據(jù)庫詳細代碼實例

    Java連接Mysql數(shù)據(jù)庫詳細代碼實例

    這篇文章主要介紹了Java連接Mysql數(shù)據(jù)庫詳細代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • Java中使用Apache POI讀取word文件簡單示例

    Java中使用Apache POI讀取word文件簡單示例

    這篇文章主要介紹了Java中使用Apache POI讀取word文件簡單示例,本文著重介紹了一些必要條件,然后給出一個簡單讀取示例,需要的朋友可以參考下
    2015-06-06

最新評論