springboot禁用security,不需要登陆

springboot引入security依赖之后,默认访问资源需要登陆,不想用的话可以禁用,有两种方式
1、启动方法上如下注解

@EnableAutoConfiguration(exclude = {SecurityAutoConfiguration.class})

2、启动方法上如下注解

@SpringBootApplication(exclude = {SecurityAutoConfiguration.class })

### 实现Spring Boot Security登录功能 为了实现基于Java的Spring Boot应用程序中的安全认证机制,可以采用`@EnableWebSecurity`自定义配置类来设置HTTP基本认证、表单登录以及其他安全策略。下面是一个简单的例子展示如何创建一个带有用户名/密码验证的安全框架。 #### 创建安全配置类 首先,在项目里新建一个名为`SecurityConfig.java`的安全配置文件[^2]: ```java package com.chz.mySpringSecurity.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.authentication.dao.DaoAuthenticationProvider; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.web.SecurityFilterChain; @Configuration @EnableWebSecurity public class SecurityConfig { private final UserDetailsService userDetailsService; public SecurityConfig(UserDetailsService userDetailsService) { this.userDetailsService = userDetailsService; } @Bean public BCryptPasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } @Bean protected DaoAuthenticationProvider authenticationProvider(){ DaoAuthenticationProvider provider=new DaoAuthenticationProvider(); provider.setUserDetailsService(this.userDetailsService); provider.setPasswordEncoder(passwordEncoder()); return provider; } @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception{ http.csrf().disable() .authorizeRequests() .antMatchers("/","/home").permitAll() .anyRequest().authenticated() .and() .formLogin() .loginPage("/login") .defaultSuccessUrl("/",true) .permitAll() .and() .logout() .invalidateHttpSession(true) .clearAuthentication(true) .logoutSuccessUrl("/") .permitAll(); return http.build(); } } ``` 这段代码设置了几个重要的组件:它禁用了CSRF保护(仅用于简化示例),并指定了哪些URL路径不需要身份验证即可访问;还启用了表单登录,并指定登录页面的位置以及成功后的重定向目标;最后也处理了登出逻辑。 #### 用户详情服务接口实现 为了让上述的身份验证提供者能够工作,还需要有一个实现了`UserDetailsService`的服务层对象负责加载用户特定的数据。这里假设已经存在了一个数据库用来存储用户的凭证信息。可以通过JPA或其他持久化技术获取这些数据。 ```java @Service public class UserDetailsServiceImpl implements UserDetailsService { @Autowired private UserRepository userRepository; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { AppUser appUser=userRepository.findByUsername(username).orElseThrow( ()->new UsernameNotFoundException("No user found with name "+username)); Set<GrantedAuthority> authorities=appUser.getRoles().stream() .map(role->new SimpleGrantedAuthority(role.getName())) .collect(Collectors.toSet()); return new org.springframework.security.core.userdetails.User(appUser.getUsername(), appUser.getPassword(),authorities); } } ``` 此部分展示了如何查询给定名称对应的用户记录,并将其转换成适合于Spring Security使用的格式。注意这里的角色权限被映射成了`GrantedAuthority`实例集合。 #### 启动应用 确保主程序入口处已启用全局方法安全性支持,这允许开发者利用诸如`@PreAuthorize`, `@PostAuthorize`等注解来进行细粒度控制: ```java @SpringBootApplication @EnableGlobalMethodSecurity(prePostEnabled=true) public class MySpringSecurityMain { ... } ``` 这样就完成了一个基础版本的支持表单提交方式登陆鉴权的应用构建过程。当然实际开发过程中可能还会涉及到更多复杂场景下的需求满足,比如记住我功能、OAuth集成等等。
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值