SpringSecurity入门案例

SpringSecurity入门案例,第1张

1:什么是SpringSecurity

权限管理相关概念:

名词解释
主体即使用系统的用户或者设备
认证authentication确认主体的身份
授权authorization系统为主体分配权限

SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。

SpringSecurity核心功能:

  1. 认证:验证用户是否合法,即是否能登录
  2. 授权:验证用户是否有做某些 *** 作的权限
2:SpringSecurity入门案例

Maven依赖:

    <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-securityartifactId>
    dependency>
    <dependency>
            <groupId>org.springframework.securitygroupId>
            <artifactId>spring-security-testartifactId>
            <scope>testscope>
     dependency>

添加SpringSecurity配置类:

@Configuration//配置类,继承WebSecurityConfigurerAdapter
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    //重写configure(HttpSecurity http)方法
    @Override
    protected void configure(HttpSecurity http) throws Exception {

                 //登录  可以配置一些属性
            http.formLogin()
                .and()
                 //认证配置 可以配置一些无需认证的路径和指定权限的路径,后续配置
                .authorizeRequests()
                    //任何请求都需要认证
                    .anyRequest().authenticated();
    }
}

运行: 访问localhost:8080即可看到如下页面

  1. 默认的用户名为user
  2. 密码会在程序启动时输出在控制台

3:SpringSecurity本质

SpringSecurity本质就是过滤链:
重要的三个过滤器:

  1. FilterSecurityInterceptor: 是一个方法级的权限过滤器, 基本位于过滤链的最底部
  2. ExceptionTranslationFilter: 是个异常过滤器,用来处理在认证授权过程中抛出的异常
  3. UsernamePasswordAuthenticationFilter : 对/login 的 POST 请求做拦截,校验表单中用户名,密码
4:UserDetailsService和PasswordEncoder

SpringBoot对SpringSecurity的自动配置:

  • 启用 Spring Security 的默认配置,它创建一个 servlet Filter作为一个名为 springSecurityFilterChain. 此 bean 负责应用程序中的所有安全性(保护应用程序 URL、验证提交的用户名和密码、重定向到登录表单等)。
  • 创建一个 UserDetailsService用户名为user的bean 以及记录到控制台的随机生成的密码。
  • 注册 Filter用一个名为 springSecurityFilterChain每个请求都使用 Servlet 容器。

如果需要自定义登录用户,比如从数据库查找,那么就可以自定义类实现UserDetailsService接口即可。

PasswordEncoder是密码解析器,官方推荐的实现类是BCryptPasswordEncoder。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/916522.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存