我正在尝试使用SecurityConfig
类中定义的自定义安全设置来测试@WebMVCTest
:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/admin*").access("hasRole('ADMIN')").antMatchers("/**").permitAll().and().formLogin();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("user").password("password").roles("ADMIN");
}
}
@RunWith(SpringRunner.class)
@WebMvcTest(value = ExampleController.class)
public class ExampleControllerMockMVCTest {
@Autowired
private MockMvc mockMvc;
@Test
public void indexTest() throws Exception {
mockMvc.perform(get("/"))
.andExpect(status().isOk())
.andExpect(view().name("index"));
}
@Test
public void adminTestWithoutAuthentication() throws Exception {
mockMvc.perform(get("/admin"))
.andExpect(status().is3xxRedirection()); //login form redirect
}
@Test
@WithMockUser(username="example", password="password", roles={"ANONYMOUS"})
public void adminTestWithBadAuthentication() throws Exception {
mockMvc.perform(get("/admin"))
.andExpect(status().isForbidden());
}
@Test
@WithMockUser(username="user", password="password", roles={"ADMIN"})
public void adminTestWithAuthentication() throws Exception {
mockMvc.perform(get("/admin"))
.andExpect(status().isOk())
.andExpect(view().name("admin"))
.andExpect(model().attributeExists("name"))
.andExpect(model().attribute("name", is("user")));
}
}
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.MOCK)
@AutoConfigureMockMvc
public class ExampleControllerSpringBootTest {
@Autowired
private MockMvc mockMvc;
// tests
}
@webmvctest
是否可以使用securityconfig
类中定义的设置?
webmvctest
只加载您的控制器,而不加载其他(这就是我们称之为切片的原因)。我们无法确定您想要哪一部分配置,而不想要哪一部分配置。如果安全配置不在主@springbootapplication
上,则必须显式导入它。否则,Spring Boot将启用默认安全设置。
如果您正在使用类似OAuth的东西,那么这是一件好事,因为您真的不想开始使用它来进行模拟测试。如果将@import(SecurityConfig.class)
添加到测试中,会发生什么情况?
Cookie是Web服务器发送的一小段信息,用于存储在Web浏览器上,以便以后可以被浏览器读取。这样浏览器会记住一些特定的个人信息。如果黑客获取cookie信息,则可能导致安全问题。 Cookies的属性 以下是Cookie的一些重要属性 - 它们通常是小文本文件,给定ID标记存储在计算机的浏览器目录中。 Web开发人员使用它们来帮助用户有效地浏览其网站并执行某些功能。 当用户再次浏览同一网站时,
主要内容:1.安全,2.性能测试Redis 1.安全 我们可以通过 redis 的配置文件设置密码参数,这样客户端连接到 redis 服务就需要密码验证,这样可以让你的 redis 服务更安全。 1.1requirepass 永久生效 默认情况下 requirepass 参数是空的,这就意味着你无需通过密码验证就可以连接到 redis 服务。 你可以通过以下命令来修改该参数: 设置密码后,客户端连接 redis 服务就需要密码验
密码学是加密和解密数据的科学,它使用户能够存储敏感信息或在不安全的网络上传输敏感信息,以便只能由预期的接收者读取。 可以在没有任何特殊措施的情况下读取和理解的数据称为明文,而伪装明文以隐藏其实质的方法称为加密。加密的明文称为密文,将加密数据恢复为纯文本的过程称为解密。 分析和破坏安全通信的科学被称为密码分析。执行相同操作的人也称为攻击者。 密码学可以是强或弱的,并且强度是通过恢复实际明文所需的时间
主要内容:渗透测试工作流程安全测试可视为对系统的受控攻击,以实际的攻击方式揭示安全漏洞或问题。安全测试的目标是评估IT系统的当前状态。它也被称为渗透测试或道德黑客攻击。 渗透测试分阶段进行,在本章中,我们将讨论完整的过程。应在每个阶段进行适当的记录,以便随时可以获得重现攻击所需的所有步骤。本文还可作为客户在渗透测试结束时收到的详细报告的基础。 渗透测试工作流程 渗透测试包括四个主要阶段 - 踩点阶段 扫描阶段 枚举阶段 渗
主要内容:安全测试是什么?安全测试对于保护系统免受Web上的恶意活动非常重要。 安全测试是什么? 安全测试是一种测试技术,用于确定信息系统是否保护数据并按预期维护功能。安全测试不保证系统的完全安全性,但重要的是将安全测试作为测试过程的一部分。 安全测试采取以下六项措施来提供安全的环境 - 保密 - 它可以防止向非预期接收者披露信息。 完整性 - 它允许从发送者向预期接收者传输准确和正确的所需信息。 身份验证 - 验证并确认
主要内容:面向读者,前提条件,教程目录执行安全测试是为了揭示系统中的安全漏洞,以保护数据和维护功能。本教程通过简单实用的示例解释了安全测试的核心概念和相关主题。 面向读者 本教程是为安全测试初学者准备的,旨在帮助他们理解安全测试的基础知识。 前提条件 在继续本教程之前,您应该对软件测试及其相关概念有基本的了解。 教程目录 1.安全测试简介 - 安全测试是一种测试技术,用于确定信息系统是否保护数据并按预期维护功能。安全测试不保证系统的完