尽管我们不提供 Spring Security 配置,为啥 Spring Security 应用程序会重定向到登录页面?
Posted
技术标签:
【中文标题】尽管我们不提供 Spring Security 配置,为啥 Spring Security 应用程序会重定向到登录页面?【英文标题】:Why Spring Security application redirects to login page though we don't provide spring security configuration?尽管我们不提供 Spring Security 配置,为什么 Spring Security 应用程序会重定向到登录页面? 【发布时间】:2019-10-05 08:32:19 【问题描述】:我没有提供任何 Spring Security 配置和重定向到登录页面的每个请求 URL。我已经使用带有所需 Spring Security 依赖项的“Spring Initializr”创建了一个 Spring Boot 应用程序。
为什么它将每个请求都重定向到登录页面?如何禁用此功能?
我试过删除所有安全配置。
@SpringBootApplication
public class SpringbootJwtExampleApplication
public static void main(String[] args)
SpringApplication.run(SpringbootJwtExampleApplication.class, args);
public interface VehicleRepository extends JpaRepository<Vehicle, Long>
@Data
@Entity
public class Vehicle
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@RestController
@RequestMapping("/v1/vehicles")
public class VehicleController
@Autowired
private VehicleRepository vehicleRepository;
@GetMapping("")
public ResponseEntity getAll()
return ok(vehicleRepository.findAll());
当我请求http://localhost:8080/v1/vehicles 它重定向到登录页面。它应该请求实际请求。
【问题讨论】:
移除 Spring Security?唯一的另一种方法是正确配置它,而不是让它加载默认值。 @Vikas 你可能需要移除安全依赖 Spring Boot 2.0.x disable security for certain profile的可能重复 【参考方案1】:根据Spring Security documentation,WebSecurityConfigurerAdapter 类提供以下默认配置:
protected void configure(HttpSecurity http) throws Exception
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.httpBasic();
要覆盖这些默认值,请编写您自己的WebSecurityConfig
,例如:
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter
@Override
protected void configure(HttpSecurity http) throws Exception
// Your own rules
【讨论】:
【参考方案2】:如果你想禁用临时 spring 安全,请在你的 spring 主类中添加注解 @SpringBootApplication(exclude = SecurityAutoConfiguration.class)
@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
public class DemoApplication
public static void main(String[] args)
SpringApplication.run(DemoApplication.class, args);
另一种解决方案是通过扩展 类
@Configuration
@EnableWebSecurity
public class BasicConfiguration extends WebSecurityConfigurerAdapter
@Override
protected void configure(HttpSecurity http) throws Exception
//customize the configs
最后,如果你的项目不需要安全,把pom.xml文件中的spring安全依赖去掉。
【讨论】:
以上是关于尽管我们不提供 Spring Security 配置,为啥 Spring Security 应用程序会重定向到登录页面?的主要内容,如果未能解决你的问题,请参考以下文章
尽管 authorizeRequests().anyRequest().permitAll() spring-security 返回 401
尽管有 SecurityConfig,但 Spring Security 会阻止 POST 请求
spring mvc集成spring security 案例