Here描述了一种解决方案,用于通过使用 AccessStrategy 根据条件处理到自定义 URL 的重定向。
然而,这是未经授权的登录逻辑流程的一部分,因此会导致仍未登录的用户到达我们重定向到的最终网址。 (通过getUnauthorizedUrl
)
如果我们想根据条件重定向用户,例如通过向网络流注入(inject)一个操作,我们如何操作返回 URL 以更改为自定义 URL?
WebUtils.getService(requestContext)
包括 source/originalUrl 的 getter,但没有明显的方法通过操作 bean 设置/操作所述值。
附:目前使用CAS版本5.3.x
最佳答案
来自 CAS 的正常 Web 应用程序的响应是使用 WebApplicationServiceResponseBuilder
构建的。
如果您检查 this block您会发现最终的响应是使用 WebApplicationServiceResponseBuilder
bean 构建的。只有在上下文中尚未找到同名的现有 bean 时,才会有条件地创建它。因此,要提供您自己的,您只需使用您自己的 @Configuration
类注册一个具有相同名称的 bean。
@Bean
public ResponseBuilder<WebApplicationService> webApplicationServiceResponseBuilder() {
return new MyOwnWebApplicationServiceResponseBuilder(...);
}
...然后继续设计您自己的 MyOwnWebApplicationServiceResponseBuilder
,甚至可以通过扩展 WebApplicationServiceResponseBuilder
并在必要时覆盖您需要的内容来有条件地构建最终重定向逻辑。
要了解 @Configuration
类的一般工作原理,您可以:
- Review this post
- 或this post
- 或查阅 Spring 和/或 Spring Boot 的文档。
关于java - 成功登录后 CAS 重定向至 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54711249/