九、Spring security 配置基于jdbc的认证登录

环境准备

  • spring boot 2.7.x

一、添加maven坐标

<!--加入数据库jdbc连接-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<!-- 加入H2数据库依赖-->
<!-- 不填版本号,默认版本继承自spring boot框架 -->
<!-- 加入scope,标记为仅在运行时使用-->
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

二、属性配置

application.yml

  h2:
    console:
      # 显示H2嵌入式UI管理界面
      enabled: true
      # 访问H2 UI界面路径
      path: /h2-console
      settings:
        trace: false
        web-allow-others: false

三、添加数据源配置

@Bean
public DataSource dataSource() {
    return new EmbeddedDatabaseBuilder()
            .setType(EmbeddedDatabaseType.H2)
            .addScript(JdbcDaoImpl.DEFAULT_USER_SCHEMA_DDL_LOCATION)// 自动建表
            .build();
}

四、配置认证管理器,引用数据源

这里创建了一个用户名为user ,密码为123456(会进行加密后存储)的用户,在程序启动时会自动插入一条用户数据到h2数据库。后续的请求认证,将通过sql获取数据库进行认证用户身份

@Bean
public UserDetailsManager userDetailsManager() {
    UserDetails user = User.builder()
            .username("user")
            .password(passwordEncoder().encode("123456"))
            .roles("USER")
            .build();
    JdbcUserDetailsManager users = new JdbcUserDetailsManager(dataSource());
    users.createUser(user);
    return users;
}

五、h2界面无法正常显示的调整

配置H2控制台界面的正常显示 https://docs.spring.io/spring-boot/docs/2.7.11/reference/html/data.html#data.sql.h2-web-console.spring-security

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
  http.headers((headers) -> headers.frameOptions().sameOrigin());
}
posted @ 2023-06-18 20:48  aesopcmc  阅读(137)  评论(0)    收藏  举报