c12*_*c12 15 spring spring-security
我需要根据用户来自哪里修改我的spring security登录页面.我的客户希望两者之间的风格不同.如果你来自appcontextroot/test
VS appcontextroot/choose
.我尝试执行以下操作,但它String url=savedRequest.getRedirectUrl();
已经等于spring登录页面,而不是用户请求的初始页面.有任何想法吗?
ExternalContext externalContext = FacesUtils.getExternalContext();
HttpServletRequest request = (HttpServletRequest)externalContext.getRequest();
HttpSession session = request.getSession(false);
if(session != null) {
SavedRequest savedRequest = new DefaultSavedRequest(request, new PortResolverImpl());
String url=savedRequest.getRedirectUrl();
}
Run Code Online (Sandbox Code Playgroud)
axt*_*avt 47
您需要SavedRequest
从会话中提取,而不是创建一个新会话:
SavedRequest savedRequest =
new HttpSessionRequestCache().getRequest(request, response);
Run Code Online (Sandbox Code Playgroud)
SavedRequest savedRequest =
(SavedRequest)session.getAttribute("SPRING_SECURITY_SAVED_REQUEST");
// ...check for null...
String targetUrl = savedRequest.getRedirectUrl();
Run Code Online (Sandbox Code Playgroud)
如果您没有可用的HttpServletResponse(例如,如果您使用org.springframework.social.connect.web.SignInAdapter
),那么丑陋但有效.
使用Spring Security 3.1.0.RC2进行测试.
归档时间: |
|
查看次数: |
16303 次 |
最近记录: |