【Spring Security】让你的项目更加安全的框架

这篇具有很好参考价值的文章主要介绍了【Spring Security】让你的项目更加安全的框架。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Spring Security】让你的项目更加安全的框架,# Spring Security,spring,java,后端

🎉🎉欢迎来到我的CSDN主页!🎉🎉

🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚

🌟推荐给大家我的专栏《Spring Security》。🎯🎯

👉点击这里,就可以查看我的主页啦!👇👇

Java方文山的个人主页

🎁如果感觉还不错的话请给我点赞吧!🎁🎁

💖期待你的加入,一起学习,一起进步!💖💖

【Spring Security】让你的项目更加安全的框架,# Spring Security,spring,java,后端

一、简介

1.1.什么是安全框架

安全框架顾名思义,就是解决系统安全问题的框架。任何应用开发的计划阶段都应该确定一组特定的安全需求,如身份验证、授权和加密方式。不使用安全框架之前,我们需要手动处理每个资源的访问控制,针对不同的项目都需要做不同的处理,此时就会显得非常麻烦,并且低效率引起的额外开销会延缓开发周期。使用安全框架,使开发团队能够选择最适合这些需求的框架,可以通过配置的方式实现对资源的访问限制,使得开发更加的高效。

1.2.主流安全框架

  • Spring SecuritySpring Security是目前Java Web领域中最流行的框架之一,它提供了一系列安全级别,包括基于认证和授权的安全保护,以及各种各样的安全校验,使得开发人员可以非常容易地为应用程序添加安全保护。Spring Security也提供了一种简单易用的方式来定制其过滤器链,以适应具体的安全需求。

  • Apache ShiroApache Shiro是一个易于使用的Java Web安全框架。它提供了一种简单的方式来管理应用程序中的身份验证、授权和加密。Apache Shiro可以轻松地集成到Spring中,并提供了一系列构建块,以便定制其安全性行为。

1.2.为什么选择Spring Security

SpringBoot 没有发布之前,Shiro 应用更加广泛,因为 Shiro 是一个强大且易用的 Java 安全框架,能够非常清晰的处理身份验证、授权、管理会话以及密码加密。利用其易于理解的API,可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。但是 Shiro 只是一个框架而已,其中的内容需要自己的去构建,前后是自己的,中间是Shiro帮我们去搭建和配置好的。

SpringBoot 发布后,随着其快速发展,Spring Security(前身叫做Acegi Security) 重新进入人们的视野。SpringBoot 解决了 Spring Security 各种复杂的配置,Spring Security 在我们进行用户认证以及授予权限的时候,通过各种各样的拦截器来控制权限的访问,从而实现安全,也就是说 Spring Security 除了不能脱离 SpringShiro 的功能它都有。

  • 在用户认证方面,Spring Security 框架支持主流的认证方式,包括 HTTP 基本认证、HTTP 表单验证、HTTP 摘要认证、OpenIDLDAP 等。

  • 在用户授权方面,Spring Security 提供了基于角色的访问控制和访问控制列表(Access Control List,ACL),可以对应用中的领域对象进行细粒度的控制。

Shiro在这个环境下实际已经不具备优势了。因为Spring这个生态链现在是太强大了。

二、Spring Security

2.1.什么是Spring Security

Spring Security是一个基于Spring框架的安全性框架,可用于对Java应用程序进行身份验证、授权和其他安全性功能的添加。它不仅可以对Web应用程序进行保护,还可以保护非Web环境下的应用程序,如远程服务和命令行应用程序等。Spring Security提供了一系列可插拔的安全性特性,如基于标记的身份验证、权限控制、单点登录、密码加密等。它还支持多种安全性协议和标准,如OAuthSAMLOpenID等,可与各种身份提供商集成。

2.2.工作原理

权限框架一般包含两大核心模块:认证(Authentication)和鉴权(Authorization)。

  • 认证:认证模块负责验证用户身份的合法性,生成认证令牌,并保存到服务端会话中(如TLS)。

  • 鉴权:鉴权模块负责从服务端会话内获取用户身份信息,与访问的资源进行权限比对。【Spring Security】让你的项目更加安全的框架,# Spring Security,spring,java,后端

核心组件介绍:

  • AuthenticationManager:管理身份验证,可以从多种身份验证方案中选择一种。

  • Authentication:用于验证用户的身份。

  • SecurityContextHolder:用于管理 SecurityContextThreadLocal,以便在整个请求上下文中进行访问,方便用户访问。

  • AccessDecisionManager:负责对访问受保护的资源的请求进行决策(即决定是否允许用户访问资源)

  • AccessDecisionVoter:是AccessDecisionManager的实现组件之一,它用于对用户请求的访问受保护的资源所需要的角色或权限进行投票。

  • ConfigAttribute:用于表示受保护资源或URL需要的访问权限,它可以理解为是访问控制策略的一部分

2.3.特点

  1. 兼容性强Spring Security是一个流行的开源框架,它可以与Spring应用程序完美集成。由于它的兼容性很好,因此可以非常方便地使用它保护Web应用程序。

  2. 功能强大Spring Security具备众多功能,包括注销、登录、角色、权限、令牌、XSS防御、CSRF防御等等。它还支持各种身份验证、角色和权限管理方式,如基于表单的认证、基于记住我功能的认证以及OAuth认证等等。

  3. 安全可靠Spring Security具有极高的安全性,它使用最新的安全标准和协议来保护Web应用程序。Spring Security采用安全性分层的策略来保护应用程序中的各个层,例如Web层、Service层、DAO层等等。除此之外,Spring Security还支持自定义安全策略和事件响应,从而使得开发者可以根据应用程序需求定制安全保护。

  4. 易于使用Spring Security提供了一种高度简化的方式来保护Web应用程序。它使用简单的标签和安全注解来添加安全保护,从而使得开发者可以基本不需要手动编写代码就可以完成安全保护。

  5. 社区广泛Spring Security是一个著名的开源框架,因此它有一个庞大的用户社区。这个社区不仅提供了大量的文档、示例和教程,而且还会解答开发者的问题、修复框架中的BUG等等。这为开发者提供了无限的支持和帮助,从而可以使用Spring Security更加自信。

 三、快速入门

3.1.基于SpringBoot创建项目

基于Spring Initializr创建SpringBoot项目

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

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

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

配置application.yml文件:

server:
    port: 8080
    
spring:
    freemarker:
        # 设置freemarker模板后缀
        suffix: .ftl
        # 设置freemarker模板前缀
        template-loader-path: classpath:/templates/
        enabled: true

3.2.配置Spring Security

3.2.1.导入依赖

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

spring-boot-starter-security包含了以下几个主要的依赖:

  • spring-security-coreSpring Security的核心模块,提供了基于权限的访问控制以及其他安全相关功能。

  • spring-security-config:提供了Spring Security的配置实现,例如通过Java配置创建安全策略和配置Token存储等。

  • spring-security-web:提供了Spring Security Web的基本功能,例如Servlet集成和通过HttpSecurity配置应用程序安全策略。

  • 3.2.2.启动项目并测试

    创建HellController类,并定义hello请求处理方法:

    @Controller
    public class HelloController {
    ​
        @RequestMapping("/hello")
        public String hello(){
           return "hello,spring security";
        }
    }

    注意:在未配置spring security依赖之前,直接启动项目是可以无阻碍的任意访问请求路径的;但是配置了spring security之后需要通过认证登录后才能访问请求路径。

    启动项目,系统会自动生成一个默认的随机登录密码(因为当前没有配置用户信息,配置之后就不会在生成默认登录密码)【Spring Security】让你的项目更加安全的框架,# Spring Security,spring,java,后端

    这就是 Spring Security 为默认用户 user 生成的临时密码,是一个 UUID 字符串

    访问登录页,并进行测试

  • 【Spring Security】让你的项目更加安全的框架,# Spring Security,spring,java,后端

    输入正确的账号和密码之后才能访问后续接口。
  • 【Spring Security】让你的项目更加安全的框架,# Spring Security,spring,java,后端

3.2.3.配置自定义账号密码

application.yml文件中配置自定义用户名和密码。

spring:
  security:
    user:
      name: admin
      password: 123456

配置完成之后,请重启服务进行测试。

四、Web安全配置类

4.1.HttpSecurity介绍

HttpSecuritySpring Security 的一个核心类,用于配置应用程序的安全策略。

HttpSecurity 类通常包含许多方法,可以用于配置以下内容:

  1. HTTP 请求的安全策略,例如访问控制、跨站点请求伪造 (CSRF) 防护等。

  2. HTTP 验证的安全策略,例如基于表单、HTTP 基本身份验证、OAuth 等。

  3. 访问受保护资源时所需的身份验证和授权方式。

方法 说明
authorizeRequests() 用于配置如何处理请求的授权,默认情况下所有的请求都需要进行认证和授权才能访问受保护的资源
formLogin() 用于配置基于表单的身份验证,包括自定义登录页面、登录请求路径、用户名和密码的参数名称、登录成功和失败的跳转等。
httpBasic() 用于配置基于HTTP Basic身份验证,包括定义使用的用户名和密码、realm名称等。
logout() 用于配置退出登录功能,包括定义退出登录请求的URL、注销成功后的跳转URL、清除会话、删除Remember-Me令牌等。
csrf() 用于配置跨站请求伪造保护,包括定义CSRF Token的名称、保存方式、忽略某些请求等。
sessionManagement() 用于配置会话管理,包括定义并发控制、会话失效、禁用URL重定向、会话固定保护等。
rememberMe() 用于配置Remember-Me功能,包括定义Remember-Me令牌的名称、有效期、加密方法、登录成功后的处理方式等。
exceptionHandling() 用于配置自定义的异常处理,包括定义异常处理器和异常处理页面等。
headers() 用于配置HTTP响应头信息,包括定义X-Content-Type-Options、X-XSS-Protection、Strict-Transport-Security等头信息。
cors() 用于配置跨域资源共享,包括定义可访问的来源、Headers等。
addFilter() 用于向当前HttpSecurity中添加自定义的Filter
and() 用于在配置中添加另一个安全规则,并将两个规则合并。

匹配规则:

  • URL匹配

方法 说明
requestMatchers() 配置一个request Mather数组,参数为RequestMatcher对象,其match规则自定义,需要的时候放在最前面,对需要匹配的的规则进行自定义与过滤
authorizeRequests() URL权限配置
antMatchers() 配置一个request Matherstring数组,参数为ant路径格式, 直接匹配url
anyRequest() 匹配任意url,无参 ,最好放在最后面
  • 保护URL

方法 说明
authenticated() 保护Url,需要用户登录
permitAll() 指定URL无需保护,一般应用与静态资源文件
hasRole(String role) 限制单个角色访问
hasAnyRole(String… roles) 允许多个角色访问
access(String attribute) 该方法使用 SPEL, 所以可以创建复杂的限制
hasIpAddress(String ipaddressExpression) 限制IP地址或子网
  • 登录formLogin

方法 说明
loginPage() 设置登录页面的 URL
defaultSuccessUrl() 设置登录成功后的默认跳转页面
failuerHandler() 登录失败之后的处理器
successHandler() 登录成功之后的处理器
failuerUrl() 登录失败之后系统转向的url,默认是this.loginPage + “?error”
loginProcessingUrl() 设置登录请求的 URL,即表单提交的 URL
usernameParameter() 设置登录表单中用户名字段的参数名,默认为 username
passwordParameter() 设置登录表单中密码字段的参数名,默认为 password
  • 登出logout

方法 说明
logoutUrl() 登出url , 默认是/logoutl
logoutSuccessUrl() 登出成功后跳转的 url 默认是/login?logout
logoutSuccessHandler() 登出成功处理器,设置后会把logoutSuccessUrl 置为null

4.2.实现自定义的登录

4.2.1.配置相关页面及请求路径

这里我分别为普通用户和管理员两个角色编写了不同的页面

【Spring Security】让你的项目更加安全的框架,# Spring Security,spring,java,后端

登录页面

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<h1>用户登录</h1>
<form action="/userLogin" method="post">
    <p>
        <label>用户:<input type="text" name="username"/></label>
    </p>
    <p>
        <label>密码:<input type="password" name="password"/></label>
    </p>
    <input type="submit" value="登录"/>
</form>
</body>
</html>

创建UserController

package com.csdn.security.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class UserController {

    @RequestMapping("/toLogin")
    public String toLogin() {
        return "login";
    }

    @RequestMapping("/userLogin")
    public String userLogin(String username, String password) {
        System.out.println("username=" + username + ",password=" + password);
        return "index";
    }

    @RequestMapping("/admin/toAddUser")
    public String toAddUser() {
        return "admin/addUser";
    }

    @RequestMapping("/admin/toListUser")
    public String toListUser() {
        return "admin/listUser";
    }

    @RequestMapping("/admin/toResetPwd")
    public String toResetPwd() {
        return "admin/resetPwd";
    }

    @RequestMapping("/admin/toUpdateUser")
    public String toUpdateUser() {
        return "admin/updateUser";
    }

    @RequestMapping("/user/toUpdatePwd")
    public String toUpdatePwd() {
        return "user/updatePwd";
    }

    @RequestMapping("/noAccess")
    public String noAccess() {
        return "accessDenied";
    }

}

4.2.2.创建SecurityConfig配置类

创建WebSecurityConfig配置类,设置@EnableWebSecurity注解开启Spring Security的默认行为。

@Configuration
//开启SpringSecurity的默认行为
@EnableWebSecurity
public class WebSecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http)
            throws Exception{
        http.authorizeRequests()
                    // 开放接口访问权限,不需要登录就可以访问
                    .antMatchers("/","/hello","/toLogin").permitAll()
                    // 其余所有请求全部需要鉴权认证
                    .anyRequest().authenticated()
    	return http.build();     
    }
}

配置完毕之后,请重启项目访问主页页面进行测试。

【Spring Security】让你的项目更加安全的框架,# Spring Security,spring,java,后端

除了开放接口能正常访问以外,其他接口均提示403错误。

4.2.3.配置自定义登录

下面所用到的方法都在HttpSecurity有介绍

@Configuration
//开启SpringSecurity的默认行为
@EnableWebSecurity
public class WebSecurityConfig {
​
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http)
            throws Exception{
        http.authorizeRequests()
                    // 开放接口访问权限,不需要登录授权就可以访问
                    .antMatchers("/","/hello","/toLogin").permitAll()
                    // 其余所有请求全部需要鉴权认证
                    .anyRequest().authenticated()
                .and()
                    .formLogin()
                    // 设置登录页面的 URL
                    .loginPage("/toLogin")
                    // 设置登录请求的 URL,即表单提交的 URL
                    .loginProcessingUrl("/userLogin")
                    // 设置登录表单中用户名字段的参数名,默认为username
                    .usernameParameter("username")
                    // 设置登录表单中密码字段的参数名,默认为password
                    .passwordParameter("password")
                ;
        return http.build();
    }
}

配置完毕之后,请重启项目访问登录页。这时会发现不在使用Spring Security提供的默认登录页(一个字丑),而是使用的自定义登录页。

【Spring Security】让你的项目更加安全的框架,# Spring Security,spring,java,后端

可使用application.yml文件中配置的Spring Security自定义账号和密码。

        security:
            user:
                name: admin
                password: 123456

4.2.4.配置多用户角色访问

首先请删除或注释掉application.yml文件中的配置的自定义账号和密码。

spring:
  freemarker:
    suffix: .ftl
    template-loader-path: classpath:/templates/
    enabled: true
#  security:
#    user:
#      name: admin
#      password: 123456

修改SecurityConfig配置类,加入多用户角色配置。

  @Bean
    //配置用户访问
    public UserDetailsService userDetailsService(){
        // 创建账户为admin密码123456
        UserDetails admin = User.withUsername("admin")
                .password(bcryptPasswordEncoder().encode("123456"))
                //拥有ADMIN、USER
                .roles("ADMIN", "USER").build();
        // 创建账户为user密码123456
        UserDetails user = User.withUsername("user")
                .password(bcryptPasswordEncoder().encode("123456"))
                //拥有USER
                .roles("USER").build();
        return new InMemoryUserDetailsManager(admin,user);
    }

SecurityFilterChain加入权限配置

  // 设置角色权限
                .antMatchers("/admin/**").hasRole("ADMIN")
                .antMatchers("/user/**").hasAnyRole("ADMIN", "USER")

【Spring Security】让你的项目更加安全的框架,# Spring Security,spring,java,后端

注意:此处采用的是基于内存方式储存身份和授权信息。

异常说明:

java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"

解决方案:这个错误通常是因为在使用 Spring Security 进行密码验证时没有正确地配置密码编码器。在 Spring Security 中,密码编码器用于将用户提供的密码编码为安全的散列值,并将其与存储在数据库中的散列值进行比较。如果没有正确地配置密码编码器,则 Spring Security 将无法识别密码编码器的类型,并在比较密码时引发“没有映射到 id“null”的密码编码器”异常。要解决这个问题,需要在 Spring Security 配置中配置一个密码编码器,并将其用于验证用户提供的密码。常用的密码编码器有 BCryptPasswordEncoderStandardPasswordEncoder

修改SecurityConfig配置类,配置密码编码器。

 @Bean
    //将BCryptPasswordEncoder放入spring上下文
    public PasswordEncoder bcryptPasswordEncoder() {
        return new BCryptPasswordEncoder();
    }

重启项目,重新使用账号和密码登录进行测试,这时候登录的身份就会被我们所给的权限限制,拥有什么样的权限才可访问什么接口。

【Spring Security】让你的项目更加安全的框架,# Spring Security,spring,java,后端

4.2.5.配置安全退出

修改SecurityConfig配置类,加入Spring Security安全退出设置。

 @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http)
            throws Exception {
        http.authorizeRequests()
                // 开放接口访问权限,不需要登录就可以访问
                .antMatchers("/toLogin").permitAll()
                // 设置角色权限
                .antMatchers("/admin/**").hasRole("ADMIN")
                .antMatchers("/user/**").hasAnyRole("ADMIN", "USER")
                // 其余所有请求全部需要鉴权认证
                .anyRequest().authenticated()
                .and()
                .formLogin()
                // 设置登录页面的 URL
                .loginPage("/toLogin")

                // 设置登录请求的 URL,即表单提交的 URL
                .loginProcessingUrl("/userLogin")
                // 设置登录表单中用户名字段的参数名,默认为username
                .usernameParameter("username")
                // 设置登录表单中密码字段的参数名,默认为password
                .passwordParameter("password")
                .and()
                .logout()
                // 设置安全退出的URL路径
                .logoutUrl("/logout")
                // 设置退出成功后跳转的路径
                .logoutSuccessUrl("/")
        ;
        http.csrf().disable();
        return http.build();
    }

配置完毕之后,请重启项目。先跳转到登录页面,输入账号密码登录,然后再点击安全退出按钮测试是否成功退出。

4.2.6.配置自定义异常处理器

跳转登录页重新登录。这时发现登录不成功,后台控制台也没有产生任何异常信息,通过浏览器的网络(network)查看现实登录请求接口302错误。

【Spring Security】让你的项目更加安全的框架,# Spring Security,spring,java,后端

解决方案:关闭csrf

修改SecurityConfig配置类,添加关闭csrf配置。

http.csrf().disable();

【Spring Security】让你的项目更加安全的框架,# Spring Security,spring,java,后端

再次重启项目,发现登录正常。

最后通过切换不同的用户(useradmin)来测试角色权限是否授权成功,admin账号访问所有接口权限正常;切换到user账号访问时,发现以/admin/**开头的接口不能访问(证明鉴权成功),但是却提示403错误。

【Spring Security】让你的项目更加安全的框架,# Spring Security,spring,java,后端

解决方案:配置自定义异常处理器

修改SecurityConfig配置类,添加自定义异常处理,并设置异常处理页面。

http.exceptionHandling().accessDeniedPage("/noauth")

【Spring Security】让你的项目更加安全的框架,# Spring Security,spring,java,后端

重启项目后发现无权限将跳转到自定义异常页面。

【Spring Security】让你的项目更加安全的框架,# Spring Security,spring,java,后端

到这里我的分享就结束了,欢迎到评论区探讨交流!!

💖如果觉得有用的话还请点个赞吧 💖

【Spring Security】让你的项目更加安全的框架,# Spring Security,spring,java,后端文章来源地址https://www.toymoban.com/news/detail-760236.html

到了这里,关于【Spring Security】让你的项目更加安全的框架的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 安全框架Spring Security是什么?如何理解Spring Security的权限管理?

    大家好,我是卷心菜。本篇主要讲解Spring Security的基本介绍和架构分析,如果您看完文章有所收获,可以三连支持博主哦~,嘻嘻。 🎁 作者简介: 在校大学生一枚,Java领域新星创作者,Java、Python正在学习中,期待和大家一起学习一起进步~ 💗 个人主页:我是一棵卷心菜的

    2024年02月02日
    浏览(51)
  • 【Spring Security】安全框架学习(十二)

    6.0 其他权限校验方法 我们前面都是使用@PreAuthorize注解,然后在在其中使用的是hasAuthority方法进行校验。Spring Security还为我们提供了其它方法. 例如:hasAnyAuthority,hasRole,hasAnyRole,等。 这里我们先不急着去介绍这些方法,我们先去理解hasAuthority的原理,然后再去学习其他方法就

    2024年02月07日
    浏览(47)
  • 【Spring Security】安全框架学习(八)

    3.0 权限系统的作用 例如一个学校图书馆的管理系统,如果是普通学生登录就能看到借书还书相关的功能,不可能让他看到并且去使用添加书籍信息,删除书籍信息等功能。但是如果是一个图书馆管理员的账号登录了,应该就能看到并使用添加书籍信息,删除书籍信息等功能

    2024年02月09日
    浏览(58)
  • 什么是CI/CD?让你的项目变得更加敏捷!

    在今天这个快速变化的时代,开发者们需要与时俱进,不断提升自己的工作效率。在这篇文章里,将一起探讨 如何使用CI/CD和Github Action让你的项目更加高效,快速响应市场变化。 CI(持续集成,Continuous Integration)是一种软件开发实践,它要求开发者频繁地将代码集成到共享

    2024年02月16日
    浏览(48)
  • Spring Boot 3 + JWT + Security 联手打造安全帝国:一篇文章让你掌握未来!

    Spring Security 已经成为 java 后台权限校验的第一选择.今天就通过读代码的方式带大家深入了解一下Security,本文主要是基于开源项目spring-boot-3-jwt-security来讲解Spring Security + JWT(Json Web Token).实现用户鉴权,以及权限校验. 所有代码基于 jdk17+ 构建.现在让我们开始吧! Springboot 3.0 Spri

    2024年02月07日
    浏览(70)
  • Shiro和Spring Security安全框架对比

    Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单。与Spring Security对比,Shiro可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了。下面对这两个安全框架进行了对比,可以

    2024年02月10日
    浏览(40)
  • 【超详细】深入探究Java中的线程安全,让你的程序更加可靠~

    我们将从以下四个问题入手,对Java的多线程问题抽丝剥茧。 什么是线程安全? 如何实现线程安全? 不同的线程安全实现方法有什么区别? 如何实现HashMap线程安全? 1. 什么是线程安全? 线程安全指的是多个线程并发访问共享资源时,不会出现数据不一致或其他意外情况的

    2023年04月24日
    浏览(34)
  • 提升 Spring Boot 吞吐量的 7 个神技,让你的项目飞起来!

    实现方式二种: 使用异步注解 @aysnc、启动类:添加 @EnableAsync 注解 JDK 8 本身有一个非常好用的 Future 类——CompletableFuture 在该示例中,启动一个线程,此时 AskThread 对象还没有拿到它需要的数据,执行到 myRe = re.get() * re.get() 会阻塞。 我们用休眠 1 秒来模拟一个长时间的计算

    2024年02月08日
    浏览(42)
  • Spring Boot进阶(51):如何在Spring Boot项目中轻松集成HTML:让你的应用更具吸引力!

            我们都知道,Spring Boot作为一款广泛应用于企业级的开发框架,其通过简化开发过程、提高开发效率赢得了众多开发者的青睐。在实际项目开发中,集成 HTML作为 Web 应用程序中的一个基本需求,也是现在极其常见的场景之一。在此,我将为大家分享一下Spring Boot如何

    2024年02月11日
    浏览(47)
  • Spring Boot 优雅集成 Spring Security 5.7(安全框架)与 JWT(双令牌机制)

    本章节将介绍 Spring Boot 集成 Spring Security 5.7(安全框架)。 🤖 Spring Boot 2.x 实践案例(代码仓库) Spring Security 是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框架。 它提供了一组可以在 Spring 应用上下文中配置的 Bean,充分利用了 Spring

    2024年02月12日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包