28.4.5 JSP限制
运行使用嵌入式servlet容器的Spring Boot应用程序(并打包为可执行存档)时,JSP支持存在一些限制。
使用Jetty和Tomcat,如果使用war包装,它应该可以工作。使用 java -jar 启动时,可执行战争将起作用,并且还可以部署到任何标准容
器。使用可执行jar时不支持JSP。
Undertow不支持JSP。
创建自定义 error.jsp 页面不会覆盖错误处理的默认视图 。应该使用自定义错误页面。
有一个JSP示例,以便您可以看到如何设置。
28.5嵌入式Reactive Server支持
Spring Boot包括对以下嵌入式响应式Web服务器的支持:Reactor Netty,Tomcat,Jetty和Undertow。大多数开发人员使用适当
的“Starter”来获取完全配置的实例。默认情况下,嵌入式服务器在端口8080上侦听HTTP请求。
28.6 Reactive Server资源配置
在自动配置Reactor Netty或Jetty服务器时,Spring Boot将创建特定的beans,它将为服务器实例提供HTTP资
源:ReactorResourceFactory 或 JettyResourceFactory 。
默认情况下,这些资源也将与Reactor Netty和Jetty客户端共享以获得最佳性能,具体如下:
相同的技术用于服务器和客户端
客户端实例使用由Spring Boot自动配置的 WebClient.Builder bean构建
开发人员可以通过提供自定义 ReactorResourceFactory 或 JettyResourceFactory bean覆盖Jetty和Reactor Netty的资源配置 - 这将应用
于客户端和服务器。
您可以在WebClient Runtime部分中了解有关客户端资源配置的更多信息 。
29.安全
如果Spring安全性在类路径上,则默认情况下Web应用程序是安全的。Spring Boot依赖于Spring安全性的内容协商策略来确定是使
用 httpBasic 还是 formLogin 。要向Web应用程序添加方法级安全性,您还可以使用所需设置添加 @EnableGlobalMethodSecurity 。其他
信息可在 Spring安全参考指南中找到。
默认 UserDetailsService 只有一个用户。用户名为 user ,密码是随机的,在应用程序启动时以INFO级别打印,如以下示例所示:
Using generated security password: 78fa095d-3f4c-48b1-ad50-e24c31d5cf35
如果您对日志记录配置进行微调,请确保将 org.springframework.boot.autoconfigure.security 类别设置为记录 INFO 级别
的消息。否则,不会打印默认密码。
您可以通过提供 spring.security.user.name 和 spring.security.user.password 来更改用户名和密码。
您在Web应用程序中默认获得的基本功能包括:
UserDetailsService (对于WebFlux应用程序,为 ReactiveUserDetailsService )bean具有内存存储,单个用户具有生成的密码
(请参阅 SecurityProperties.User 用户的属性)。
基于表单的登录或HTTP基本安全性(取决于Content-Type),用于整个应用程序(如果执行器在类路径上,则包括执行器端点)。
用于发布身份验证事件的 DefaultAuthenticationEventPublisher 。
您可以为其添加bean来提供不同的 AuthenticationEventPublisher 。
29.1 MVC安全性
默认安全配置在 SecurityAutoConfiguration 和 UserDetailsServiceAutoConfiguration 中实现。SecurityAutoConfiguration 导入用
于Web安全的 SpringBootWebSecurityConfiguration 和用于配置身份验证的 UserDetailsServiceAutoConfiguration ,这在非Web应用
程序中也是相关的。要完全关闭默认Web应用程序安全配置,您可以添加bean类型 WebSecurityConfigurerAdapter (这样做不会禁
用 UserDetailsService 配置或Actuator的安全性)。
要同时关闭 UserDetailsService 配置,您可以添加bean类型 UserDetailsService , AuthenticationProvider
或 AuthenticationManager 。Spring Boot示例中有几个安全应用程序可以帮助您开始使用常见用例。
可以通过添加自定义 WebSecurityConfigurerAdapter 来覆盖访问规则。Spring Boot提供了便捷方法,可用于覆盖执行器端点和静态资源的
访问规则。EndpointRequest 可用于创建基于 management.endpoints.web.base-path 属性的 RequestMatcher 。PathRequest 可用于为
常用位置的资源创建 RequestMatcher 。