1. 首页
  2. 软件开发
  3. SpringSecurity——Web权限方案用户认证方式之一(设置用户名密码)

SpringSecurity——Web权限方案用户认证方式之一(设置用户名密码)

  • 发布于 2024-08-17
  • 2 次阅读

Spring Security提供了多种方式来进行用户认证,其中最常见的方式是设置用户名和密码进行认证。这种方式涉及到配置用户信息存储、密码加密和认证处理等步骤。

详细步骤如下:

  1. 配置用户信息存储 :首先需要配置用户的用户名、密码和角色信息。可以通过 InMemoryUserDetailsManager 来在内存中配置用户信息,也可以通过自定义的 UserDetailsService 接口从数据库或其他数据源中加载用户信息。

  2. 密码加密 :Spring Security要求存储用户密码时进行加密,可以使用 PasswordEncoder 接口实现密码加密。常见的加密方式包括BCrypt、SHA-256等。

  3. 认证处理 :配置 AuthenticationManagerBuilder 来处理用户认证,指定用户信息存储方式、密码加密方式等。

代码如下:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
   

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
   
        auth
            .inMemoryAuthentication()
            .withUser("user")
            .password(passwordEncoder().encode("password"))
            .roles("USER");
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
   
        return new BCryptPasswordEncoder();
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
   
        http
            .authorizeRequests()
                .anyRequest().authenticated()
                .and()
            .formLogin()
                .and()
            .httpBasic();
    }
}

在上面的代码中,通过 configureGlobal() 方法配置了一个内存中的用户信息,用户名为"user",密码经过BCrypt加密后的值为"password",拥有"USER"角色。在 configure() 方法中,我们配置了请求的授权规则和登录方式。

通过这样的配置,Spring Security就可以使用设置的用户名和密码进行用户认证。当用户尝试登录时,系统会根据配置的用户信息进行身份验证,验证成功后用户可以访问受保护的资源。

原文链接: https://blog.csdn.net/2401_82884096/article/details/138200646