gpt4 book ai didi

spring - 避免使用Spring Security在Grails App中进行登录重定向

转载 作者:行者123 更新时间:2023-12-02 14:02:13 24 4
gpt4 key购买 nike

我有一个Grails应用程序,该应用程序使用Spring Security Core进行身份验证和授权。该应用程序的主要目的是提供一个rest api,该api使用通过每个请求中的Authorization header 传递的 token 进行保护。此 token 是在grails应用程序外部生成的,没有正式的“登录”阶段-每个请求都经过身份验证和授权。

我已经实现了自己的身份验证过滤器和提供程序,它们似乎在 token 身份验证方面就可以工作。问题是,对于成功的身份验证,当我只想静静地继续执行原始请求时,spring安全核心总是重定向到登录成功页面(通过successHandler.defaultTargetUrl配置):

  • 用户请求/ rest / foo
  • 自定义spring安全过滤器匹配请求并处理它。如果授权 header 是正确的,则调用/ rest / foo(当前重定向到defaultTargetUrl),否则将用户转发到/ error。 (这最后一部分有效)

  • 查看似乎是罪魁祸首的AjaxAwareAuthenticationSuccessHandler的来源,我看到可以通过添加targetUrlParameter(默认为'spring-security-redirect)作为请求参数来设置targetUrl,但这看起来既丑陋又不必要。有什么方法可以使这项工作按要求进行吗?我考虑过实现自己的SuccessHandler ...那是正确的解决方案吗?我还有其他选择吗?

    编辑:
    我通过扩展AjaxAwareAuthenticationSuccessHandler并覆盖了defineTargetUrl(request,response)并返回request.getServletPath()来尝试自定义成功处理程序。这使我摆脱了最初的问题,但创建了无限重定向循环,大概是由于我需要无状态身份验证和DefaultRedirectStrategy重定向到目标而不是转发的结合。

    编辑2: 成功! 使用 this SOF thread中的代码,我可以使自定义AuthenticationSuccessHandler解决方案正常工作。对于Grails用户,您还需要像这样更新resources.groovy:
    authenticationSuccessHandler(com.foo.bar.YourSuccessHandler){}

    最佳答案

    您是否检查了基于Spring Security Core的Spring Security for Rest

    编辑

    如果要更改默认操作,更改config.groovy中targetUrlParameter的值是一种方法。

    关于spring - 避免使用Spring Security在Grails App中进行登录重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21261304/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com