我正在使用带有自定义身份验证的 spring-mvc 的 spring-security web 身份验证,到目前为止一切都很好:
我的问题是:/login
加载一个具有全功能页面的 View ,但现在我必须为 iframe/popup 格式提供身份验证(例如,对于一个经过身份验证的小书签),所以加载一个不同的查看(或使用不同的参数)。
我看到两个并不过分复杂的解决方案:
在我的
/login
操作中,我有一种方法(到目前为止我还不知道)来检索原始请求并根据一组使用更简单 View 的 URL 检查它,然后选择匹配的 View 。 => 我如何检索这个原始请求?我创建了另一个登录操作/表单,比如
/login/minimal
,它也 POST 到 spring security URL/j_spring_security_check
,但我需要实现请求存储/检索机制,以便在成功登录后执行原始请求。 => 我看到这与SecurityContextPersistenceFilter
有关,但我不知道如何实现或调用它。
最佳答案
如果我对您的问题的理解正确,您希望根据原始请求字符串更改登录页面。查看this forum post用于从 session 访问原始请求 url。它适用于旧版本,但您应该能够使用它开始。
编辑 我还没有机会验证这一点,但看起来 key 在 Acegi 安全性和 Spring Security 3 之间发生了变化。看起来您可以使用中的常量从 session 访问它WebAttributes类(class)。有效
//request is a HttpServletRequest object
SavedRequest savedRequest = (SavedRequest)request.getSession().getAttribute(WebAttributes.SAVED_REQUEST);
String url = savedRequest.getRequestURL();
关于java - Spring Security的几种不同的登录表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4672759/