Commit Graph

5424 Commits (v2.20.11)

Author SHA1 Message Date
Ryan Wang ddaf7b0dce
chore: remove unused dependencies and configuration files (#6917)
#### What type of PR is this?

/area core
/kind cleanup

#### What this PR does / why we need it:

Remove unused dependencies and configuration files

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-10-22 06:54:29 +00:00
Ryan Wang 9ecc8f1d95
fix: post slug generation not following selected strategy (#6914)
#### What type of PR is this?

/area ui
/kind bug
/milestone 2.20.x

#### What this PR does / why we need it:

修复文章自动生成别名不按照别名生成策略生成的问题。

#### Which issue(s) this PR fixes:

Fixes #6913 

#### Special notes for your reviewer:

需要测试:

1. 分类、标签创建和更新时的别名生成
2. 文章新建时,别名是否按照生成策略生成。

#### Does this PR introduce a user-facing change?

```release-note
修复文章自动生成别名不按照别名生成策略生成的问题。
```
2024-10-22 06:52:28 +00:00
John Niang 329bcc5748
Exclude console and uc assets in security configuration (#6915)
#### What type of PR is this?

/kind improvement
/area core
/milestone 2.20.x

#### What this PR does / why we need it:

This PR excludes console and uc assets in security configuration to make them access by anonymous users.

#### Which issue(s) this PR fixes:

Fixes https://github.com/halo-dev/halo/issues/6908

#### Special notes for your reviewer:

```bash
http http://localhost:8090/uc/assets/index-E-uvwInx.css -ph

HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: no-cache
Content-Encoding: gzip
Content-Length: 26213
Content-Type: text/css
Vary: Accept-Encoding
```

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-10-22 03:40:27 +00:00
Ryan Wang 53b291b54e
fix: resolve button height overflow in signup form on older Safari (#6912)
#### What type of PR is this?

/area core
/kind bug
/milestone 2.20.x

#### What this PR does / why we need it:

修复在低版本 Safari 浏览器中,注册表单中的按钮高度溢出的问题。

#### Which issue(s) this PR fixes:

Fixes #6910 

#### Does this PR introduce a user-facing change?

```release-note
修复在低版本 Safari 浏览器中,注册表单中的按钮高度溢出的问题。
```

<!-- Fuck Safari -->
2024-10-21 09:24:21 +00:00
Ryan Wang 500f702e02
fix: can not return to post list after publishing when re-logged in (#6902)
#### What type of PR is this?

/area ui
/kind bug
/milestone 2.20.x

#### What this PR does / why we need it:

修复通过登录跳转到文章编辑页面时,发布文章会跳转到个人中心的问题。

#### Which issue(s) this PR fixes:

Fixes #6901 

#### Special notes for your reviewer:

测试步骤:

1. 新建文章,编写内容,但是不发布
2. 在新的浏览器选项卡中退出登录
3. 回到文章编辑页面,跳转到登录页面重新登录之后,发布文章
4. 观察是否会返回到 Console 的文章管理页面。

#### Does this PR introduce a user-facing change?

```release-note
修复通过登录跳转到文章编辑页面时,发布文章会跳转到个人中心的问题。
```
2024-10-19 15:58:44 +00:00
guqing 833b884bdb
fix: modify name column charset to make it case-sensitive for MySQL (#6897)
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.20.x

#### What this PR does / why we need it:
将 MySQL 的表创建脚本 name 列字符集改为 utf8mb4_bin 以使其对大小写敏感

Fixes https://github.com/halo-dev/halo/issues/4372

**how to test it?**
使用 docker 运行 MySQL
```shell
# mariadb 同样将镜像改为 mariadb 后执行相同步骤
docker run --name mysql-test -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=halo -p 3306:3306 --rm -d mysql:latest
```
然后执行表创建脚本并手动执行以下两条 SQL 能成功插入
```sql
insert into extensions(name,data,version) values('a', 'a', 0)
insert into extensions(name,data,version) values('A', 'A', 0)
```

#### Does this PR introduce a user-facing change?
```release-note
修改 MySQL 表创建脚本 name 列的字符集使其大小写敏感以解决可能会遇到切换数据库时因为数据冲突而无法导入备份的问题(这只对此版本及之后的新用户有效)
```
2024-10-18 09:49:38 +00:00
guqing 13644d21eb
fix: language preference is not remembered under non-HTTPS connections (#6891)
#### What type of PR is this?
/kind bug
/area core
/milestone 2.20.x

#### What this PR does / why we need it:
修复非 HTTPS 连接下无法记住用户语言偏好的问题

#### Which issue(s) this PR fixes:
Fixes #6888

#### Does this PR introduce a user-facing change?
```release-note
修复非 HTTPS 连接下无法记住用户语言偏好的问题
```
2024-10-18 09:47:37 +00:00
John Niang 3570353ce2
Bind sign up data instead of building by hand (#6895)
#### What type of PR is this?

/kind improvement
/area core
/milestone 2.20.x

#### What this PR does / why we need it:

This PR refactors sign up data binding using internal `bind` method in `ServerRequest` instead of binding my hand. It's more convenient and simpler.

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-10-18 07:55:39 +00:00
John Niang 697a5e5a4c
Fix the problem of not redirecting to corresponding login page after authentication failure (#6896)
#### What type of PR is this?

/kind bug
/area core
/milestone 2.20.x

#### What this PR does / why we need it:

This PR appends query `method=local` after redirection location in authentication failure handler to redirect to login page with local method.

#### Which issue(s) this PR fixes:

Fixes https://github.com/halo-dev/halo/issues/6894

#### Does this PR introduce a user-facing change?

```release-note
修复非默认登录方式登录失败之后跳转至默认登录方式的问题
```
2024-10-18 07:29:37 +00:00
guqing c465bf8c75
fix: prevent initialization failure when theme directory already exists (#6889)
#### What type of PR is this?
/kind bug
/area core
/milestone 2.20.x

#### What this PR does / why we need it:
修复从旧版本升级到 2.20 会因为默认主题目录已经存在而无法初始化的问题

#### Which issue(s) this PR fixes:
Fixes #6887

#### Does this PR introduce a user-facing change?
```release-note
修复从旧版本升级到 2.20 会因为默认主题目录已经存在而无法初始化的问题
```
2024-10-17 08:45:30 +00:00
John Niang 02def4e20a
Expose ReactiveUserDetailsService to authentication plugins (#6885)
#### What type of PR is this?

/kind improvement
/area core
/milestone 2.20.x

#### What this PR does / why we need it:

This PR exposes ReactiveUserDetailsService to authentication plugins.

#### Does this PR introduce a user-facing change?

```release-note
支持在插件中使用 ReactiveUserDetailsService
```
2024-10-17 02:43:30 +00:00
Ryan Wang 8df91e80b3
chore: bump app store plugin version (#6881)
#### What type of PR is this?

/area core
/kind improvement
/milestone 2.20.x

#### What this PR does / why we need it:

Bump app store plugin to 1.6.0

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-10-16 13:59:27 +00:00
John Niang 514a05552f
Refactor PAT authentication by making it standalone (#6878)
#### What type of PR is this?

/kind improvement
/area core
/milestone 2.20.x

#### What this PR does / why we need it:

This PR makes PAT configuration standalone and removes unused configuration related with `JWT`.

After this, we can define additional authentications in plugins with correct configuration order.

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-10-16 10:07:27 +00:00
John Niang db4e68b732
Expose user and role services into plugins (#6880)
#### What type of PR is this?

/kind feature
/area plugin
/milestone 2.20.x

#### What this PR does / why we need it:

This PR exposes user and role services into plugins. Some authentication plugins may interact with users and users' roles.

#### Does this PR introduce a user-facing change?

```release-note
允许在插件中使用 UserService 和 RoleService
```
2024-10-16 09:29:27 +00:00
guqing c577deb6ee
fix: missing ServerWebExchange in plugin template processor extension (#6877)
#### What type of PR is this?
/kind bug
/area core
/milestone 2.20.x

#### What this PR does / why we need it:
修复由 #6680 导致的插件模板处理扩展中无法获取到请求上下文的问题

#6680 修复了插件可以在模板处理扩展中通过请求上下文获取到 Halo 的 ApplicationContext 的问题
但这也引入了新的问题就是导致模板处理扩展无法获取到请求上下文,此 PR 通过判断传递给插件的 ITemplateContext 是否为 IWebContext,如果是则包装为 SecureTemplateWebContext 传递给插件,以解决此问题

#### Which issue(s) this PR fixes:
Fixes #6875

#### Does this PR introduce a user-facing change?
```release-note
修复插件模板处理扩展中无法获取到请求上下文的问题
```
2024-10-16 08:21:28 +00:00
Ryan Wang ecc7c07d08
docs: add gitpod link for readme (#6876)
#### What type of PR is this?

/kind documentation

#### What this PR does / why we need it:

添加 Gitpod 的演示环境链接。

#### Does this PR introduce a user-facing change?

```release-note
None 
```
2024-10-16 06:07:27 +00:00
Ryan Wang c9869b7d20
docs: update readme for 2.20 (#6874)
#### What type of PR is this?

/kind documentation

#### What this PR does / why we need it:

更新快速开始的版本号。

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-10-16 03:13:27 +00:00
John Niang b95a83a242
Fix the problem of not being able to create PAT for OAuth2 user (#6870)
#### What type of PR is this?

/kind bug
/area core
/milestone 2.20.x

#### What this PR does / why we need it:

This PR refactors check of whether the current user is a real user to fix the problem of not being able to create PAT for OAuth2 user.

#### Does this PR introduce a user-facing change?

```release-note
修复通过 OAuth2 登录之后无法正常创建和恢复个人令牌的问题
```
2024-10-15 08:51:22 +00:00
John Niang c3020d6a85
Fix the problem of not being able to disconnect OAuth2 user (#6869)
#### What type of PR is this?

/kind bug
/area core
/milestone 2.20.x

#### What this PR does / why we need it:

This PR corrects typo of `apisGroups` to `apiGroups` to fix the problem of not being able to disconnect OAuth2 user.

#### Special notes for your reviewer:

0. Install OAuth2 plugin
1. Log in as a normal user
2. Bind a OAuth2 user
3. Try to unbind it

#### Does this PR introduce a user-facing change?

```release-note
修复无法正常解绑 OAuth2 用户
```
2024-10-15 07:57:21 +00:00
guqing 45aae9c1a8
fix: preventing access to login page after Halo setup (#6865)
#### What type of PR is this?
/kind bug
/area core
/milestone 2.20.x

#### What this PR does / why we need it:
修复初始化 Halo 之后无法进入登录页面的问题

此问题原因是更改了 AuthProvider 的逻辑,当系统启动之后缺少默认的登录方式导致登录页面无法正确渲染
此 PR 将确保默认的登录方式始终存在来解决此问题

how to test it?
重新初始化 Halo 之后能正确渲染登录页面并登录即为符合预期

#### Does this PR introduce a user-facing change?
```release-note
修复初始化 Halo 之后无法进入登录页面的问题
```
2024-10-14 12:43:18 +00:00
John Niang dd5f02e505
Fix the problem of redirecting to previous URI with fragment after authenticated (#6862)
#### What type of PR is this?

/kind bug
/area core
/milestone 2.20.x

#### What this PR does / why we need it:

This PR ignores URI fragment while removing redirect URI. Before that, users may be redirected to previous redirect URI that contains fragment.

#### Does this PR introduce a user-facing change?

```release-note
修复二次登录后重定向跳转至旧地址的问题
```
2024-10-14 07:09:16 +00:00
guqing 17eea823a5
fix: retain legacy enabled field for auth provider setting (#6861)
#### What type of PR is this?
/kind bug
/area core
/milestone 2.20.x

#### What this PR does / why we need it:
恢复 https://github.com/halo-dev/halo/pull/6846 中删除的 SystemSetting.AuthProvider#enabled 字段避免插件应用到了它可能会发生错误,将其标记为过时

#### Does this PR introduce a user-facing change?
```release-note
None
```
2024-10-14 06:17:16 +00:00
Ryan Wang f7b2dcf9fc
chore: bump preset theme version (#6860)
Signed-off-by: Ryan Wang <i@ryanc.cc>
2024-10-14 12:25:35 +08:00
guqing 82498dcedf
refactor: auth provider sorting logic for better maintainability and clarity (#6846)
* refactor: auth provider sorting logic for better maintainability and clarity

* Refine UI

* chore: remove other auth type

* Remove other auth providers

---------

Co-authored-by: Ryan Wang <i@ryanc.cc>
2024-10-14 10:53:24 +08:00
Ryan Wang 4059f159b2
Merge pull request #6848 from ruibaby/feat/add-h2-alert-for-setup-page-2
feat: add H2 database usage warning for setup page
2024-10-14 10:18:51 +08:00
Ryan Wang eff73dca12 feat: add H2 database usage warning for setup page 2024-10-14 10:18:24 +08:00
johnniang 55f133396c Set usingH2database variable into setup template model 2024-10-14 10:18:03 +08:00
Ryan Wang b0d36b784e
feat: support toast a message for backend exceptions when sending emails (#6856)
#### What type of PR is this?

/area core
/kind improvement
/milestone 2.20.x

#### What this PR does / why we need it:

注册表单发送邮箱验证码时,支持显示来自后端的异常。

<img width="693" alt="image" src="https://github.com/user-attachments/assets/78d1d793-7673-4442-9b0b-1eb7c4d91ebd">


#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-10-13 15:33:14 +00:00
Ryan Wang 0d8c4bb126
fix: set default value for attachment storage policy in user center (#6853)
#### What type of PR is this?

/area core
/kind bug
/milestone 2.20.x

#### What this PR does / why we need it:

修复首次初始化之后,个人中心使用的附件存储策略没有默认值的问题。

#### Which issue(s) this PR fixes:

Fixes #6834 

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-10-13 15:11:14 +00:00
Ryan Wang a21413e080
fix: not redirect to /console after setup (#6852)
#### What type of PR is this?

/area core
/kind bug
/milestone 2.20.x

#### What this PR does / why we need it:

修复初始化登录之后,没有正确重定向到 /console 的问题。

#### Which issue(s) this PR fixes:

Fixes #6850 

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-10-13 14:55:14 +00:00
Ryan Wang 149cb5d136
refactor: remove underline in h2 warning alert (#6849)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.20.x

#### What this PR does / why we need it:

before:

<img width="804" alt="image" src="https://github.com/user-attachments/assets/3d55d7d2-1dfa-4988-afbd-dd502e54fdb2">

after:

<img width="806" alt="image" src="https://github.com/user-attachments/assets/6194d995-b6f1-404a-820d-b667ccfab9f1">

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-10-13 14:49:14 +00:00
John Niang 7c6a8e9ce7
Fill operation ID while building setup route (#6857)
#### What type of PR is this?

/kind bug
/area core
/milestone 2.20.x

#### What this PR does / why we need it:

This PR fills operation ID while building setup route to prevent errors when generating OpenAPI docs.

```java
2024-10-13T22:09:46.997+08:00 ERROR 68966 --- [     parallel-4] a.w.r.e.AbstractErrorWebExceptionHandler : [88654f05-3]  500 Server Error for HTTP GET "/v3/api-docs/apis_aggregated.api_v1alpha1"

java.lang.IllegalStateException: You should either fill, the Operation or at least the bean class and the bean method
	at org.springdoc.core.fn.builders.operation.Builder.build(Builder.java:467) ~[springdoc-openapi-starter-common-2.6.0.jar:2.6.0]
	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
```

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-10-13 14:21:14 +00:00
guqing 58488686a7
chore: ignore preset plugin installation errors to avoid initialization failure (#6855)
#### What type of PR is this?
/milestone 2.20.x
/area core
/milestone 2.20.x

#### What this PR does / why we need it:
忽略预设插件安装时的错误避免无法初始化

可能因为没有预先 download 预设插件到项目目录而发生 IO 异常影响初始化流程

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-10-13 13:57:13 +00:00
guqing 3bdec9eacf
fix: vertical images are rotated to horizontal when generating thumbnails (#6842)
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.20.x

#### What this PR does / why we need it:
修复竖向图片生成缩略图后会丢失方向信息展示为横向图片的问题

#### Which issue(s) this PR fixes:
Fixes #6802

#### Does this PR introduce a user-facing change?
```release-note
修复竖向图片生成缩略图后会丢失方向信息展示为横向图片的问题
```
2024-10-12 13:47:10 +00:00
John Niang b761fe2b79
Preserve remember-me option after authentication failure (#6844)
#### What type of PR is this?

/kind bug
/area core
/milestone 2.20.x

#### What this PR does / why we need it:

This PR preserves `remember-me` option after authentication failure.

#### Which issue(s) this PR fixes:

Fixes https://github.com/halo-dev/halo/issues/6835

#### Special notes for your reviewer:

1. Go to login page
2. Input invalid username or password and select `remember-me` option
3. Click `Login` button
4. See the result

#### Does this PR introduce a user-facing change?

```release-note
修复登录失败后记住我选项被重置的问题
```
2024-10-12 10:59:10 +00:00
Ryan Wang b9da9d05ea
refactor: improve login page ui (#6832)
#### What type of PR is this?

/area core
/kind improvement
/milestone 2.20.x

#### What this PR does / why we need it:

优化登录等页面的 UI,主要优化低分屏下的 UI 表现,防止元素过大。

#### Does this PR introduce a user-facing change?

```release-note
优化登录等页面的 UI,优化低分屏下的 UI 表现,防止元素过大。
```
2024-10-12 09:21:10 +00:00
John Niang 6d149ae3bb
Fix the problem of being able to configure invalid external URL (#6840)
#### What type of PR is this?

/kind bug
/area core
/milestone 2.20.x

#### What this PR does / why we need it:

This PR makes users not be able to configure a invalid external URL like `https:www/halo.run` even if it is an valid URL format.

#### Which issue(s) this PR fixes:

Fixes #6837 

#### Does this PR introduce a user-facing change?

```release-note
修复可配置无效的外部访问地址的问题
```
2024-10-12 08:21:10 +00:00
Ryan Wang 91a69de849
refactor: improve accessibility for login page (#6839)
#### What type of PR is this?

/area core
/kind improvement
/milestone 2.20.x

#### What this PR does / why we need it:

提升登录页面的可访问性。

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-10-12 07:19:09 +00:00
Ryan Wang f40770ad64
chore: add prettier-plugin-organize-imports plugin to organize imports (#6836)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.20.x

#### What this PR does / why we need it:

使用 https://github.com/simonhaenisch/prettier-plugin-organize-imports 优化 UI 项目的模块导入,之前我们是通过[配置 VSCode](9468e8741f/ui/.vscode/settings.json (L34-L36)) 来实现导入优化,但这种方式局限于 VSCode 编辑器,在其他编辑器无法得到统一的支持。

并且我们为 UI 添加了 git pre commit hook,在提交代码前会对已修改的文件执行 prettier,这样能够更好的保证一致性。

<img width="1475" alt="image" src="https://github.com/user-attachments/assets/755e2aba-be07-4fba-8007-6210ef44a8ef">

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-10-12 07:05:09 +00:00
John Niang 9468e8741f
Add globalInfo into logout page (#6831)
#### What type of PR is this?

/kind improvement
/area core
/milestone 2.20.x

#### What this PR does / why we need it:

This PR adds globalInfo data into logout template model.

#### Which issue(s) this PR fixes:

Fixes https://github.com/halo-dev/halo/issues/6821

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-10-12 04:21:09 +00:00
John Niang cecbfcfa4a
Disable CSRF protection for actuator endpoints (#6830)
#### What type of PR is this?

/kind bug
/area core
/milestone 2.20.x

#### What this PR does / why we need it:

This PR disables CSRF protection for actuator endpoints because they are not state-changing operations.

#### Which issue(s) this PR fixes:

Fixes #6827 

#### Special notes for your reviewer:

Try to restore Halo.

#### Does this PR introduce a user-facing change?

```release-note
修复恢复备份后无法自动重启的问题
```
2024-10-12 04:15:09 +00:00
John Niang 0ad565f35c
Do not cache template result for pre-auth pages (#6829)
#### What type of PR is this?

/kind bug
/area core
/milestone 2.20.x

#### What this PR does / why we need it:

This PR prevents caching from cache plugin for pre-auth pages and logout page.

#### Which issue(s) this PR fixes:

Fixes #6826 

#### Special notes for your reviewer:

1. Install `Page Cache Plugin` from <https://www.halo.run/store/apps/app-BaamQ>.
2. Open a private browser window
3. Access login page twice
4. Try to login
5. See the result

#### Does this PR introduce a user-facing change?

```release-note
解决因缓存插件缓存登录页面导致无法登录的问题
```
2024-10-12 04:11:09 +00:00
John Niang 98a131309c
Add globalInfo into templates model (#6823)
#### What type of PR is this?

/kind improvement
/area core
/milestone 2.20.x

#### What this PR does / why we need it:

This PR adds globalInfo into template models and refactors password reset to adapt data binding.

Fixes https://github.com/halo-dev/halo/issues/6821

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-10-11 09:51:06 +00:00
Ryan Wang d63eaed10f
fix: correct display of email verification message toast (#6822)
#### What type of PR is this?

/area core
/kind bug
/milestone 2.20.x

#### What this PR does / why we need it:

修复不能正常显示邮箱验证提示的问题。

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-10-11 09:27:05 +00:00
Ryan Wang 59a59715a1
refactor: improve password hint text on reset password page (#6820)
#### What type of PR is this?

/area core
/kind improvement
/milestone 2.20.x

#### What this PR does / why we need it:

优化重置密码页面的密码提示文本,以 aab8806f0d/application/src/main/resources/config/i18n/messages_zh.properties (L66) 为准。

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-10-11 08:23:07 +00:00
Ryan Wang 687c760288
feat: add password reset success message in login page (#6818)
#### What type of PR is this?

/area core
/kind improvement
/milestone 2.20.x

#### What this PR does / why we need it:

重置密码跳转到登录页面之后,在顶部添加重置成功的提示。

#### Does this PR introduce a user-facing change?

```release-note
None 
```
2024-10-11 08:21:07 +00:00
Ryan Wang 2de02c9ad4
refactor: improve ui of login page (#6809)
#### What type of PR is this?

/area core
/kind improvement
/milestone 2.20.x

#### What this PR does / why we need it:

优化登录页面的 UI。

<img width="1910" alt="image" src="https://github.com/user-attachments/assets/736b1f72-e7c1-4c19-a0d9-dc935c738931">


#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-10-11 08:03:05 +00:00
guqing aab8806f0d
refactor: support locale-based validation messages based on users language (#6819)
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.20.x

#### What this PR does / why we need it:
优化校验提示信息根据用户选择的语言代替 `Locale#getDefault()#getLanguage()`

#### Does this PR introduce a user-facing change?
```release-note
None
```
2024-10-11 07:11:05 +00:00
John Niang 99db7a6101
Support redirecting to URI with fragment (#6817)
#### What type of PR is this?

/kind bug
/area core
/milestone 2.20.x

#### What this PR does / why we need it:

This PR supports redirecting to URI with fragment. e.g.: <http://localhost:8090/login?redirect_uri=%2F%23afragment>(redirect_uri is `/#afragment`).

#### Which issue(s) this PR fixes:

Fixes #6767 

#### Special notes for your reviewer:

1. Request <http://localhost:8090/login?redirect_uri=%2F%23afragment>
2. Log in
3. See the redirection

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-10-11 02:45:05 +00:00
guqing 25c54d792e
perf: replace concatMap to flatMapSequential to improve parallelism and efficiency (#6706)
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.20.x

#### What this PR does / why we need it:
将 concatMap 替换为 flatMapSequential 以提高并行度和执行效率

可以看一下这个场景示例来模拟像文章列表 API 的数据组装
假如每个步骤的执行时间是 1s 有 4 个步骤 同时 Flux 发出 4 条数据:

```java
@Test  
void test() {  
    var startMs = System.currentTimeMillis();  
  
    var monoA = Mono.fromSupplier(  
            () -> {  
                sleep();  
                return "A";  
            })        .subscribeOn(Schedulers.boundedElastic());  
  
    var monoB = Mono.fromSupplier(  
            () -> {  
                sleep();  
                return "B";  
            })        .subscribeOn(Schedulers.boundedElastic());  
  
    var monoC = Mono.fromSupplier(  
            () -> {  
                sleep();  
                return "C";  
            })        .subscribeOn(Schedulers.boundedElastic());  
  
    var monoD = Mono.fromSupplier(  
            () -> {  
                sleep();  
                return "D";  
            })        .subscribeOn(Schedulers.boundedElastic());  
  
    var convert = Mono.when(monoA, monoB, monoC, monoD);  

    Flux.just("1", "2", "3", "4")
        // concatMap(convert::thenReturn)
        .flatMapSequential(convert::thenReturn)  
        .collectList()  
        .block(); 

    System.out.println("Time: " + (System.currentTimeMillis() - startMs));  
}

private static void sleep() {  
    try {  
        Thread.sleep(1000);  
    } catch (InterruptedException e) {  
        throw new RuntimeException(e);  
    }
}
```
**结果:**
1. 如果每个步骤没有加  subscribeOn 且使用 concatMap 耗时: 16362 ms
2. 每个步骤使用 subscribeOn 且使用 concatMap 耗时: 4174 ms
3. 每个步骤使用 subscribeOn 且使用 flatMapSequential 耗时: 1185 ms

#### Does this PR introduce a user-facing change?
```release-note
提升页面访问速度
```
2024-10-10 09:49:01 +00:00