Spring Security OAuth2.0(7):自定义认证连接数据库

📅 2026/7/22 6:44:55
Spring Security OAuth2.0(7):自定义认证连接数据库
本章代码已分享至Gitee:https://gitee.com/lengcz/security-spring-boot自定义认证连接数据库首先创建数据库和用户表CREATETABLEt_user(idbigint(20)NOTNULLAUTO_INCREMENT,usernamevarchar(64)DEFAULTNULL,passwordvarchar(64)DEFAULTNULL,fullnamevarchar(255)DEFAULTNULL,mobilevarchar(20)DEFAULTNULL,PRIMARYKEY(id))ENGINEInnoDBAUTO_INCREMENT1DEFAULTCHARSETutf8;导入依赖dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jdbc/artifactId/dependency配置数据库spring:datasource:url:jdbc:mysql://localhost:3306/db1?serverTimezoneAsia/ShanghaicharacterEncodingUTF-8useSSLfalseusername:rootpassword:123456driver-class-name:com.mysql.cj.jdbc.Driver编辑UserDto和UserDaoDatapublicclassUserDto{privateStringid;privateStringusername;privateStringpassword;privateStringfullname;privateStringmobile;privateSetStringauthorities;}RepositorypublicclassUserDao{AutowiredprivateJdbcTemplatejdbcTemplate;publicUserDtogetUserByUsername(Stringusername){Stringsqlselect id,username,password,fullname from t_user where username?;ListUserDtoqueryjdbcTemplate.query(sql,newObject[]{username},newBeanPropertyRowMapper(UserDto.class));if(null!queryquery.size()1){returnquery.get(0);}returnnull;}}修改自定义的UserDetailsService从数据库中获取用户ServicepublicclassSpringDataUserDetailsServiceimplementsUserDetailsService{AutowiredUserDaouserDao;//根据用户名获取用户的信息OverridepublicUserDetailsloadUserByUsername(Stringusername)throwsUsernameNotFoundException{UserDtouseruserDao.getUserByUsername(username);if(nulluser){returnnull;}//从数据库中查用户信息System.out.println(查询用户usernameusername);UserDetailsuserDetailsUser.withUsername(user.getUsername()).password(user.getPassword()).authorities(p1).build();// UserDetails userDetails User.withUsername(xiaowang).password($2a$10$NcYCXQUjgeCzc2NWWop6s.pz6KCW9QMaLkBYKu34Co38KTJ3ef2jW).authorities(p1).build();returnuserDetails;}}启动服务器测试