Spring Framework 学习笔记(4) Spring Security

1. 背景

本节我们学习 Spring Security 。

2.知识

Spring Security 是一个提供身份验证、授权和针对常见攻击的保护的框架。

Spring Secrity 能够在Web请求级别和方法调用级别处理身份认证和授权。

Spring Secrity 通过 filter 来实现认证,DelegatingFilterProxy是一个特殊的Servlet Filter,它本身所做的工作并不多。只是将工作委托给一个javax.servlet.Filter实现类。.

Spring Security 一般要配置这些:

  • 用户存储的配置(如何存储用户信息)
  • 指定哪些请求需要认证,预计需要的权限
  • 自定义登录页面

Spring Security 非常灵活,能够基于各种用户存储来做认证:内存,数据库,LDAP,自定义等

3. 示例

1) 引用依赖库

<dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>${spring-security-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>${spring-security-version}</version>
        </dependency>

使用 @EnableWebSecurity 注解启用Web安全功能。

/**
 * @EnableWebSecurity 注解将会启用Web安全功能。
 * Spring Security必须配置在一个实现了 WebSecurityConfigurer的bean中,或者继承WebSecurityConfigurerAdapter
 */
@Configuration
@EnableWebSecurity
public class MySecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
        // 启用 内存数据存储
        auth.inMemoryAuthentication()
                .passwordEncoder(passwordEncoder)
                .withUser("user").password(passwordEncoder.encode("123")).roles("USER").and()
                .withUser("admin").password(passwordEncoder.encode("admin")).roles("USER", "ADMIN");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.formLogin()// 启用默认登录页
                .and()
                .authorizeRequests()
//                .antMatchers("/manage/**").authenticated()
                .antMatchers("/manage/**").hasRole("ADMIN")
                .anyRequest().permitAll();
    }


}

上面代码有两个配置方法:

  • configure(AuthenticationManagerBuilder auth) :配置了内存存储用户信息,并增加了两个账号。
  • configure(HttpSecurity http) :配置了请求需要认证。

我的代码见:https://github.com/vir56k/java_demo/tree/master/spring_security_demo_1

4..参考:

https://docs.spring.io/spring-security

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值