當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
[SpringSecurity]web权限方案_用户认证_查询数据库完成认证
生活随笔
收集整理的這篇文章主要介紹了
[SpringSecurity]web权限方案_用户认证_查询数据库完成认证
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#mysql 數據庫連接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/demo?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
package com.atguigu.securitydemo1.config;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;@Configuration public class SecurityConfigTest extends WebSecurityConfigurerAdapter {@Autowiredprivate UserDetailsService userDetailsService;@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.userDetailsService(userDetailsService).passwordEncoder(password());}@BeanPasswordEncoder password(){return new BCryptPasswordEncoder();} }
package com.atguigu.securitydemo1.config;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;@Configuration public class SecurityConfigTest extends WebSecurityConfigurerAdapter {@Autowiredprivate UserDetailsService userDetailsService;@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.userDetailsService(userDetailsService).passwordEncoder(password());}@BeanPasswordEncoder password(){return new BCryptPasswordEncoder();} }
第一步 引入依賴
整合MyBatisPlus完成數據庫操作
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.0.5</version></dependency><!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--lombok 用來簡化實體類--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency> </dependencies>第二步 創建數據庫和數據庫表
第三步 創建users表對應實體類
package com.atguigu.securitydemo1.entity;import lombok.Data;@Data public class Users {private Integer id;private String username;private String password;}第四步 整合mp,創建接口,繼承mp的接口
package com.atguigu.securitydemo1.entity;import lombok.Data;@Data public class Users {private Integer id;private String username;private String password;}第五步 在MyUserDetailsService調用mapper里面的方法查詢數據庫進行用戶認證
package com.atguigu.securitydemo1.service;import com.atguigu.securitydemo1.entity.Users; import com.atguigu.securitydemo1.mapper.UsersMapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.AuthorityUtils; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service;import java.util.List;@Service("userDetailsService") public class MyUserDetailsService implements UserDetailsService {@Autowiredprivate UsersMapper usersMapper;@Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {//調用userMapper方法,根據用戶名查詢數據庫QueryWrapper<Users> wrapper = new QueryWrapper<>();//where username = ?wrapper.eq("username",username);Users users = usersMapper.selectOne(wrapper);//判斷if (users==null)//數據庫沒有用戶名,認證失敗{throw new UsernameNotFoundException("用戶名不存在!");}List<GrantedAuthority> auths = AuthorityUtils.commaSeparatedStringToAuthorityList("rold");return new User(users.getUsername(),new BCryptPasswordEncoder().encode(users.getPassword()),auths);} }第六步 在啟動類添加注解MapperScan
package com.atguigu.securitydemo1;import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication @MapperScan("com.atguigu.securitydemo1.mapper") public class Securitydemo1Application {public static void main(String[] args) {SpringApplication.run(Securitydemo1Application.class, args);}}總結
以上是生活随笔為你收集整理的[SpringSecurity]web权限方案_用户认证_查询数据库完成认证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哔哩哔哩B站中自己投稿的视频怎么删除
- 下一篇: [SpringSecurity]web权