微服务架构之Spring Boot(三十九)

2022-04-07 20:02:04 浏览数 (1)

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 。

0 人点赞