【Spring Security系列】一文带你了解权限框架与Spring Security核心概念

本文主要讲解关于【Spring Security系列】一文带你了解权限框架与Spring Security核心概念相关内容,让我们来一起学习下吧!

权限框架

权限框架是软件开发中用于管理用户权限和访问控制的工具。在企业或者我们毕设复杂的系统中,不同的用户或角色需要拥有不同的访问和操作权限,以确保系统的安全性和数据完整性。今天我们就讨论一下Java中的安全框架!

流行的安全框架

【Spring Security系列】一文带你了解权限框架与Spring Security核心概念

在企业的开发中,Spring Security,Shiro都是比较流行的权限框架,它们可以用于为应用程序提供安全访问控制功能。下面我们来学习一下它们。

Spring Security

Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架(声明式哦)。

它充分利用了Spring IoC、DI和AOP功能,为我们的应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。

Spring Security的核心概念主要包括认证和授权。认证就是验证用户身份的过程,通常涉及用户名和密码等凭据的校验。授权则是验证用户是否有权限执行特定操作或访问特定资源。Spring Security他给我们提供了丰富的功能,可以用来做角色管理、权限控制、单点登录。

Shiro

Shiro是一个强大且易用的Java安全框架,它为我们提供了认证、授权、加密和会话管理等功能。

【Spring Security系列】一文带你了解权限框架与Spring Security核心概念

Shiro可以工作在任何应用环境中,不仅支持Web项目,还支持非Web项目。它具有低依赖性,不需要任何框架和容器,可以独立运行。

Shiro的关键对象包括主体、权限和角色。主体是需要访问资源的用户或程序,权限则是用于控制对资源的访问。Shiro通过角色来管理用户的权限,不同的角色可以拥有不同的权限集合。

Spring Security和Shiro的区别

  • 集成与依赖上:Spring Security是基于Spring框架的,所有与Spring应用集成得更加紧密。它依赖于Spring容器,可以充分利用Spring的IoC和AOP等特性。而Shiro则独立于Spring,可以在任何Java应用中使用,无需依赖Spring容器。这也是我们经常使用Spring Security的原因!!!

  • 功能丰富性上:Spring Security在功能方面相对Shiro更加丰富。它提供了更多的安全特性和选项,比如更细粒度的权限控制、单点登录支持。Shiro虽然功能也很强大,但在某些方面还是不如Spring Security强大

  • 配置与使用上:Shiro的配置和使用相对简单,对于初学者来说更加友好。Spring Security因为功能丰富,所以上手稍微复杂一些,需要更多的学习和配置。

我们Java开发人员日常使用Spring框架比较多,需要更丰富的安全功能和更紧密的集成,所有通常情况下Spring Security是一个更好的选择。接下来我们学习一下Spring Security。

Spring Security的核心概念

Spring Security的核心概念包括:

  • 认证(Authentication):验证用户身份的过程,通常通过用户名和密码等凭据进行。

【Spring Security系列】一文带你了解权限框架与Spring Security核心概念

  • 授权(Authorization):确定已认证用户是否有权访问某个资源或执行某个操作的过程。【Spring Security系列】一文带你了解权限框架与Spring Security核心概念
虽然英文比较相似,但它俩不是“双胞胎”!!!
  • 角色(Role):用于表示用户权限的一种抽象概念,可以将多个权限组合成一个角色,方便管理和分配。
  • 安全上下文(Security Context):保存认证用户的信息和授权信息的地方,可以在整个应用中访问。
  • 过滤器链(Filter Chain):Spring Security使用过滤器链来处理安全相关的请求,每个过滤器负责处理特定的安全任务。

Spring Security简单使用

讲了这么多Spring Security的概念,我们现在来简单使用一下!

首先第一步,在项目的pom.xml文件中添加Spring Security的依赖:

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

然后创建一个配置类SecurityConfig

@Configuration
public class SecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {

        http.formLogin()             //自定义自己编写的登陆页面
                .loginPage("/login.html")    //登录页面设置
                .loginProcessingUrl("/login") //登录访问路径
                .permitAll()//登录页和登录访问路径无需登录也可以访问
                .and()
                .authorizeRequests()
                .antMatchers("/css/**","/images/**").permitAll()
                .anyRequest().authenticated()
                .and()
                .csrf().disable();    //关闭csrf防护
        return http.build();
    }

}

然后我们创建一个简单的控制器,用于测试认证和授权:

@RequestMapping("/hello")
public String hello(){
    //认证成功,得到认证成功之后用户信息
    Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
    String userName = authentication.getName();
    return "hello  "+userName;
}

我们启动程序,输入URL:【Spring Security系列】一文带你了解权限框架与Spring Security核心概念 密码输出在了控制台,我们通过控制台可以得到密码【Spring Security系列】一文带你了解权限框架与Spring Security核心概念

这个时候访问URL时就可以看到下图的结果了:

【Spring Security系列】一文带你了解权限框架与Spring Security核心概念

文章到这里就结束了,后续会分享其他这方面的知识点,感谢大家的支持!

【Spring Security系列】一文带你了解权限框架与Spring Security核心概念

以上就是关于【Spring Security系列】一文带你了解权限框架与Spring Security核心概念相关的全部内容,希望对你有帮助。欢迎持续关注程序员导航网,学习愉快哦!

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...