如何在spring security的redirect /cas/login回调中设置location

gwo2fgha  于 2023-05-17  发布在  Spring
关注(0)|答案(1)|浏览(178)

Spring CAS将重定向回被禁止的url,因为前端将rest API作为 AJAX 请求发送,所以Spring Security默认重定向不起作用
我必须发送SSO URL cas_login_url/service=?my_service_cas_login作为响应。前端会执行window.location.href = cas_login_url/service=?my_service_cas_login跳转到SSO登录页面。
它将重定向到"/",因为我可以看到位置是"/",在spring cas validate API中是******/cas/login?票证=TS*************
如果我想把地址设置为自定义url,我应该怎么做,我应该把参数传递到哪里?

3j86kqsm

3j86kqsm1#

这个问题很老了,但如果有人还在想:您需要使用AuthenticationSuccessHandler配置CasAuthenticationFilter(与任何身份验证过滤器一样)。
例如,如果您只想重定向到URL“/welcome”:

filter.setAuthenticationSuccessHandler(new SimpleUrlAuthenticationSuccessHandler("/welcome"));

下面是一个以POJO方式配置过滤器的更完整示例:

@Bean
public CasAuthenticationFilter casAuthenticationFilter(AuthenticationManager authenticationManager, ServiceProperties casServiceProperties) throws Exception {
        CasAuthenticationFilter filter = new CasAuthenticationFilter();
        filter.setFilterProcessesUrl("/login/cas");
        filter.setAuthenticationManager(authenticationManager);
        filter.setServiceProperties(casServiceProperties);
        filter.setAuthenticationSuccessHandler(new SimpleUrlAuthenticationSuccessHandler("/welcome"));
        return filter;
    }

相关问题