# 1)Spring Security

Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架,它是用于保护基于Spring的应用程序的实际标准。

Spring Security是一个框架,致力于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Spring Security的真正强大之处在于可以轻松扩展以满足自定义要求。

Spring Security的主要功能:

  • 认证:验证用户名和密码是否合法(是否系统中用户)

  • 授权:是系统用户不代表你能使用某些功能,因为你可能没有权限

  • 防御会话固定,点击劫持,跨站点请求伪造等攻击

  • Servlet API集成

  • 与Spring Web MVC的可选集成

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

# <1>自定义认证和授权

ADMIN 可以访问/admin下的资源;USER 可以访问/user下的资源。

对于用户名、密码、登录页面、访问权限等都可以在 WebSecurityConfigurerAdapter 的实现类中配置。

@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        //配置内存中的 用户名、密码和角色
        auth.inMemoryAuthentication().passwordEncoder(new MyPasswordEncoder()).withUser("user").password("123456").roles("USER");
        auth.inMemoryAuthentication().passwordEncoder(new MyPasswordEncoder()).withUser("admin").password("123456").roles("ADMIN");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/login").permitAll()
                .antMatchers("/user").hasRole("USER") //访问 /user这个接口,需要有USER角色
                .antMatchers("/admin").hasRole("ADMIN")
                .anyRequest().authenticated() //剩余的其他接口,登录之后就能访问
                .and()
                .formLogin().defaultSuccessUrl("/hello");
    }
}
Last Updated: 12/15/2023, 8:18:50 AM