如何在authentication-success-handler中获取请求属性

时间:2013-12-23 15:33:22

标签: spring spring-mvc spring-security

我正在尝试在authentication-success-handler中做一些事情,我需要访问几个值,这些值是发布到Spring安全性的初始请求数据的一部分。 我在用户尝试登录时发布以下信息

  1. 为j_username
  2. 为j_password
  3. 商店代码
  4. Spring安全性能够成功验证用户并调用“authentication-success-handler”。

    public class WebshopAuthenticationSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler
    {
    
        public WebshopAuthenticationSuccessHandler() {
    
        }
    
        @Override
        public void onAuthenticationSuccess(final HttpServletRequest request,
                final HttpServletResponse response, final Authentication authentication)
                throws IOException, ServletException {
    
            ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
            request.getAttribute( "storeCode" );
            attr.getRequest().getAttribute( "storeCode" );
         }
    }
    

    但无论如何,我无法获得storeCode的价值及其作为null的价值。 不确定我做错了什么。 我假设Spring在调用onAuthenticationSuccess时创建了一个新的Request和response实例,但是如何传递/检索从登录页面传递的值?

1 个答案:

答案 0 :(得分:3)

如果数据来自HTTP POST请求,则应使用getParameter,而不是getAttribute。属性仅为服务器端状态,不是由客户端提交的。