如何扩展 LoginUrlAuthenticationEntryPoint 或如何实现 AuthenticationEntryPoint

2024-01-25

我正在尝试这样做:让 spring security 在登录页面的查询字符串中添加 return to url https://stackoverflow.com/q/4696905/,即:让spring告诉登录页面我来自哪里。我有一些 SSO 集成..所以我会将 url 发送给他们,或者他们会为我附加引荐来源网址,所以我知道用户应该登录并发送到/some/url。这就是花花公子。我遇到的问题是延长LoginUrlAuthenticationEntryPoint(除非你能告诉我一个实施的充分理由AuthenticationEntryPoint反而)。我只需要修改登录页面的请求,如下所示:

RedirectStrategy redirectStrategy = new DefaultRedirectStrategy();

// only append returnto to '/login' urls
if(request.getServletPath() == "/login") {
    // indicates we want to return to this page after login
    redirectStrategy.sendRedirect(request, response, "/login?returnto=" + request.getServletPath());
}

我怎样才能让其余的请求做他们的事情呢?这是不正确的(我刚刚在做什么):

RequestDispatcher dispatcher = request.getRequestDispatcher("/login");

// just forward the request
dispatcher.forward(request, response);

因为它使我们陷入重定向循环。然而似乎是spring 在其版本中做了什么commence http://grepcode.com/file/repo1.maven.org/maven2/org.springframework.security/spring-security-web/3.0.7.RELEASE/org/springframework/security/web/authentication/LoginUrlAuthenticationEntryPoint.java#109。我很困惑。我应该做什么commence在我的自定义扩展中LoginUrlAuthenticationEntryPoint?


弄清楚了。只需转发到附加“returnto”的登录页面即可。一开始我觉得很困惑,因为LoginUrlAuthenticationEntryPoint乍一看,这并不意味着“这会将用户重定向到登录页面”。这就是我所需要的:

@Override
public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authenticationException) throws IOException, ServletException {
    RedirectStrategy redirectStrategy = new DefaultRedirectStrategy();

    redirectStrategy.sendRedirect(request, response, "/login?returnto=" + request.getServletPath());
}

这很有用:grepcode.com 上的 LoginUrlAuthenticationEntryPoint.java http://grepcode.com/file/repo1.maven.org/maven2/org.springframework.security/spring-security-web/3.0.7.RELEASE/org/springframework/security/web/authentication/LoginUrlAuthenticationEntryPoint.java#109

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何扩展 LoginUrlAuthenticationEntryPoint 或如何实现 AuthenticationEntryPoint 的相关文章

随机推荐

  • 如何检查我正在使用哪个版本的 Angular?

    如何知道我正在使用哪个版本的 Angular 我努力了 angular version angular v angular version angular v but get bash angular command not found 我
  • 现在如何安装Visual Studio 2015 PlatformSDK?

    当我运行某些东西时 例如pip install scrapy 使用 python 3 7 我遇到了麻烦error WinError 3 The system cannot find the path specified C Program
  • GCC 发出 ARM idiv 指令(续)

    我想知道这对于 Krait 400 CPU 是否可行 我遵循了一些建议here https stackoverflow com questions 15782089 gcc to emit arm idiv instructions 当我使
  • Azure PHP SDK:在单个 zip 文件中下载容器的所有 blob

    我想将指定容器中的所有 blob 下载为 zip 文件 有没有办法直接从 Azure 下载 zip 文件 而不需要在我的服务器上处理它 目前我的想法如下 file put contents file name get file conten
  • 以 Zend Repo 作为源,从 master 制作本地 Git 存储库

    我想在测试服务器上克隆主分支 在该服务器上运行主分支和测试站点 此存储库是 Zend PHP 框架应用程序 在配置文件中 home me public html domain com ZendSkeletonApplication git
  • 突出显示根目录的父路径

    我尝试通过更改节点和链接的填充来突出显示从鼠标所在的节点到根节点的路径 我正在使用 Mike s 的 Radial Tidy TreeBlock https bl ocks org mbostock 4063550 我尝试过node anc
  • 使用 Spring MVC 流式传输可关闭资源

    读完后本文 https www airpair com java posts spring streams memory efficiency 我希望使用 Spring 将数据库查询结果直接流式传输到 JSON 响应 以确保恒定的内存使用量
  • 禁用 mod_deflate 和 mod_gzip 压缩 HTML、CSS 和 JS 的最佳方法

    我在运行 Apache 2 的共享主机上有几个站点 我想压缩传送到浏览器的 HTML CSS 和 Javascript 主机已禁用 mod deflate 和 mod gzip 因此这些选项无效 不过 我确实有 PHP 5 所以我可以使用它
  • 通过累积串联将嵌套列表转换为非嵌套列表

    我想像这样转换嵌套列表 l lt list A list a list 1 b list 2 B list cd list c list 3 4 5 d list 6 7 8 e list c 9 10 进入列表 o lt list A c
  • 通过 ODBC“十进制值缩放导致数据截断”

    当我尝试在 MS Access 中查看 ODBC 表时 收到错误 十进制值缩放导致数据截断 我知道返回错误的字段 并且 Access 在查询时能够识别该字段 但我无法查看结果 Error记录 并且错误不断出现 我试过了CDbl 没有运气 A
  • 停止 IntentService 的正确方法

    我正在使用 IntentService 将图像上传到服务器 我的问题是我不知道如何 何时停止服务 当我在 onHandleIntent Intent 中调用 stopself 时 所有在 IntentService 队列中等待的 Inten
  • Typescript 模块创建 AMD 与 Common JS

    任何 Typescript 专家都可以澄清一下在使用 Typescript 时何时以及为何选择 AMD 与 Common JS 来创建模块吗 AMD 用于浏览器 例如 RequireJS 原因是它允许并行下载文件 因为网络延迟是主要瓶颈 C
  • 创建 HTML(PHP 或 Jquery)的最佳实践?

    我有一个 JavaScript 对象 其中包含一些信息 我可以想到两个选项来从这个对象创建 HTML 我想知道哪一种是正确的做事方式 这只是所有偏好吗 1 使用 JavaScript 循环遍历这个数组并使用 Jquery 创建 HTML 2
  • 生成 10000 位随机序列

    有没有比在循环中附加 0 和 1 更有效的方法来在 Python 中生成 10 kBit 10 000 位 随机二进制序列 如果您想要一个随机二进制序列 那么生成适当范围内的随机整数可能是最快的 import random s random
  • 实时卡中的 OpenGL?

    我一直在研究 glass GDK 和 glass 原生 Java 开发 我有一个在 Glass 上运行良好的开放 GL 应用程序 使用标准 Android 约定 我希望将其移植到 GDK 以利用语音触发器等功能 虽然我当然可以轻松地将它用作
  • 从哪里开始学习 Linux DMA/设备驱动/内存分配

    我正在移植 调试设备驱动程序 由另一个内核模块使用 并面临死胡同 因为 dma sync single for device 因内核错误而失败 我不知道这个函数应该做什么 而且谷歌搜索也没有什么帮助 所以我可能需要了解更多关于这个东西的知识
  • 正则表达式删除记事本++中标签之间的文本

    我有这样的代码
  • 我的 iframe 无法与 UIWebView 配合使用

    我已经测试过我的iframe到处都运行得很好 但是iOS in Objective C 它不起作用UIWebView 这是我的代码 有人可以帮助我吗 谢谢 self webView scrollView scrollEnabled NO N
  • 目录中所有文件内容的总大小[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 当我使用ls or du 我得到每个文件占用的磁盘空间量 我需要打开每个文件并计算字节数时得到的文件和子目录中所有数据的总和 如果我能在不
  • 如何扩展 LoginUrlAuthenticationEntryPoint 或如何实现 AuthenticationEntryPoint

    我正在尝试这样做 让 spring security 在登录页面的查询字符串中添加 return to url https stackoverflow com q 4696905 即 让spring告诉登录页面我来自哪里 我有一些 SSO