当前位置: 首页 > news >正文

Spring Security概述

Spring Security是一个功能强大且高度可定制的框架,专门用于保护Java Web应用程序。它为开发者提供了一套全面的解决方案,帮助他们在应用程序中实现安全控制,从而确保数据的安全性和完整性。

添加依赖

首先,需要在Spring Boot项目的  pom.xml  文件中添加 Spring Security 的依赖,一定要注意版本问题。

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

配置 Security

以下代码实现了一个简单的Spring Security配置,定义了基本的请求授权规则(部分路径公开,其他需认证)、表单登录方式(包括登录页面路径)、登出设置以及简单的内存用户认证信息(一个测试用户),为Spring Boot应用提供了初步的安全防护机制。

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/", "/home").permitAll() // 允许所有人访问主页和/home路径.anyRequest().authenticated() // 其他所有请求都需要认证.and().formLogin() // 使用表单登录.loginPage("/login") // 设置登录页面的路径.permitAll().and().logout().permitAll();}@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.inMemoryAuthentication() // 使用内存中的用户存储.withUser("user") // 创建一个用户.password("{noop}password") // 设置密码({noop}表示不进行密码加密).roles("USER"); // 分配角色}
}

控制层

为了处理应用中的主页和登录页面请求,需要创建一个简单的控制器。

@Controller
public class SimpleController {@GetMapping("/")public String home() {return "home";}@GetMapping("/login")public String login() {return "login";}
}

创建前端登录界面,实现应有的逻辑

然后运行应用

启动应用后,在浏览器中访问  http://localhost:8080/ ,此时,如果直接尝试访问受保护的路径,将会被自动重定向到登录页面。输入在配置中设定的用户名 "user" 和密码 "password",即可成功登录并访问相应的受保护资源。

常用注解

在Spring Security中,有几个比较重要的方法安全相关的注解和概念,它们对于实现细粒度的安全控制至关重要:

  1. @EnableMethodSecurity:这个注解用于启用方法安全功能,可以放在配置类上,以开启Spring Security的方法安全支持。
  2. @PreAuthorize:这是一个强大的注解,用于在方法执行之前进行权限检查,它允许使用Spring Expression Language编写表达式,以确定是否授权执行该方法,例如,@PreAuthorize("hasRole('ROLE_VIEWER')")表示只有拥有ROLE_VIEWER角色的用户才能调用该方法。
  3. @PostAuthorize:与@PreAuthorize相对应,这个注解用于在方法执行之后进行权限检查。它也可以访问方法的返回值,并根据返回值做出进一步的权限控制。
  4. @RolesAllowed:这是JSR-250规范中的注解,与@Secured类似,用于指定可以访问方法的角色。Spring Security也支持这个注解。
  5. @Secured:这是一个较旧的注解,用于授权方法调用。
  6. @WithMockUser:这个注解常用于测试中,用于模拟一个已认证的用户。可以指定用户名、角色等信息,以便在测试时模拟不同的用户场景。

这些注解和概念是Spring Security中方法安全的核心,它们使得开发者能够以声明式的方式实现复杂的安全逻辑,保护应用程序的关键部分不被未授权访问。

这些仅仅是 Spring Security 应用的冰山一角,实际上,Spring Security 提供了极为丰富的功能,例如认证、授权、防止CSRF,为构建安全的企业级应用程序提供了强大的支持。


http://www.mrgr.cn/news/75171.html

相关文章:

  • LeetCode【0038】外观数列
  • 学习threejs,使用第一视角控制器FirstPersonControls控制相机
  • 动手学深度学习10.1. 注意力提示-笔记练习(PyTorch)
  • golang使用etcd版本问题
  • JVM 中的完整 GC 流程
  • 深度学习神经网络创新点方向(具体)
  • 基于树莓派的日志抓取工具制作
  • 代理通讯链实现内网通讯
  • 探秘 RPC:揭开远程过程调用的实现原理
  • 如何在python中模拟重载初始化函数?
  • 下载|阿里云等联合编写的《2024大模型典型示范应用案例集》发布
  • 「Mac玩转仓颉内测版10」PTA刷题篇1 - L1-001 Hello World
  • Jdbc学习笔记(四)--PreparedStatement对象、sql攻击(安全问题)
  • 联丰策略炒股股票交易市场券商股,盘中突然拉升
  • 25京考考试时间已确定,速速查收!
  • 时序论文19|ICML24 : 一篇很好的时序模型轻量化文章,用1k参数进行长时预测
  • Linux系统编程多线程之条件变量和信号量讲解
  • java八股-垃圾回收机制-垃圾回收算法,分代回收,垃圾回收器
  • 精灵图(十八课)
  • RHCE web解析、dns配置、firewalld配置实验
  • 人工智能技术的发展历程和现状
  • 基于Spring Boot+Vue的多媒体素材管理系统的设计与实现
  • 多模态Embedding不愧是CVPR和NIPS的共同选择!这发文思路真的需要好好学习一下!
  • c语言学习16按键控制流水灯
  • 闯关leetcode——3178. Find the Child Who Has the Ball After K Seconds
  • docker安装到D盘