SpringSecurity框架

1.SpringSecurity 框架介绍

用户认证(Authentication)和用户授权(Authorization)。其本质是一个过滤器链。

用户认证: 

验证某个用户是否为系统中的合法主体。

用户授权:

验证某个用户是否有权限执行某个操作。

2.SpringSecurity 入门案例

pom依赖

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

        <!--        SpringSecurity需要导入的依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
            <version>2.5.14</version>
        </dependency>

security默认登陆用户:username:user     password:见控制台

 登录成功实例:

 ***过滤器是如何进行加载的?***

1.使用SpringSecurity配置过滤器 (DelegatingFilterProxy),SpringBoot项目中无需手动配置。

UserDetailsService接口与PasswordEncoder接口讲解:

UserDetailsService:查询数据库用户名和密码过程。

* 创建类继承UsernamePasswordAuthenticationFilter,重写三个方法。

* 创建类实现UserDetailsService,编写查询数据过程,返回User对象(安全框架提供对象)。

PasswordEncoder:数据加密接口,用于返回User对象里面加密后的密码。

3.SpringSecurity Web 权限方案

认证授权

设置登录用户名和密码的三种方式:

1.通过配置文件

spring.security.user.name=username(账户)

spring.security.user.password=password(密码)

2.通过配置类

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        // 密码加密
        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
        String password = passwordEncoder.encode("123456");

        auth.inMemoryAuthentication().withUser("bao").password(password).roles("admin");
    }

    // 不加会报错
    @Bean
    PasswordEncoder password(){
        return new BCryptPasswordEncoder();
    }
}

3.自定义编写实现类

@Configuration
public class SecurityConfigTest extends WebSecurityConfigurerAdapter {

    @Autowired
    private UserDetailsService userDetailsService;
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService).passwordEncoder(password());
    }
    @Bean
    PasswordEncoder password(){
        return new BCryptPasswordEncoder();
    }
}
@Service("userDetailsService")
public class MyUserDetailsService implements UserDetailsService {
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        List<GrantedAuthority> auths = AuthorityUtils.commaSeparatedStringToAuthorityList("role");
        return new User("city",new BCryptPasswordEncoder().encode("123456"),auths);
    }
}

4.SpringSecurity 微服务权限方法

5.SpringSecurity原理总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值