java - 成功登录时 CAS 重定向到 URL
问题描述
这里描述了一种解决方案,通过使用AccessStrategy
.
然而,这是未经授权的登录逻辑流程的一部分,因此导致仍未登录的用户到达我们重定向到的最终 url。(通过getUnauthorizedUrl
)
如果我们想根据条件重定向用户,比如通过向 webflow 注入操作,我们如何操纵返回 URL 以将其更改为自定义 URL?
WebUtils.getService(requestContext)
包括 source/originalUrl 的 getter,但没有明显的方法可以通过操作 bean 设置/操作所述值。
ps 目前使用 CAS 版本 5.3.x
解决方案
来自 CAS 的普通Web 应用程序的响应是使用WebApplicationServiceResponseBuilder
.
如果您检查此块,您会发现最终响应是使用WebApplicationServiceResponseBuilder
bean 构建的。只有在上下文中尚未找到同名的现有 bean 时,才会有条件地创建它。@Configuration
所以要提供你自己的,你只需要使用你自己的类注册一个同名的bean 。
@Bean
public ResponseBuilder<WebApplicationService> webApplicationServiceResponseBuilder() {
return new MyOwnWebApplicationServiceResponseBuilder(...);
}
...然后继续设计你自己的MyOwnWebApplicationServiceResponseBuilder
,甚至可能通过扩展WebApplicationServiceResponseBuilder
和覆盖你需要的东西来有条件地构建最终的重定向逻辑。
要了解@Configuration
课程的一般运作方式,您可以:
推荐阅读
- macos - 来自电子的通知显示 electron.app.Electron
- python - 获取列表中每个变量的名称并转换为字符串
- html - 即使在 HTML 中使用 required 属性后也无法对齐文本
- javascript - Bootstrap 5 选项卡内容未显示在 OwlCarousel2 项目中
- php - WordPress 如何对搜索到的 URL 进行编码
- mysql - 是否只有在where子句中有主键时才允许删除查询?
- javascript - 构建一个从 MongoDB 中提取数据的表,该表实时过滤并按字母顺序排序
- django - 如果我不在 django 中使用任何身份验证并使用带有手动哈希密码的 django 查询过滤器登录用户,我会错过什么
- android - 如何在 Flutter 和 Dart 中使用 DropDown 从另一个 Widget 更新一个 Widget?
- sql - Oracle APEX Application Builder:搜索特定员工并在硬编码文本字段中返回他们的姓名、薪水和部门