使用Ajax的Spring安全性 - 已记录的用户详细信息

问题描述:

我已经使用AuthenticationEntryPoint和SimpleUrlAuthenticationSuccessHandler通过Ajax实现了用户身份验证。使用Ajax的Spring安全性 - 已记录的用户详细信息

现在我需要获取登录的用户名到我的脚本变量。

任何人都可以帮助我吗?

MyAuthenticationSuccessHandler

public class MyAuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler { 

    private Log log = LogFactory.getLog(MyAuthenticationSuccessHandler.class); 

    @Override 
    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, 
      Authentication authentication) throws IOException, ServletException { 

     log.info("point-2-->"+authentication.getName()); //this prints what I need. 

     // This is actually not an error, but an OK message. It is sent to avoid redirects. 
     response.sendError(HttpServletResponse.SC_OK); 

    } 
} 

我的JavaScript函数

$("#login").on('click', function(e) { 
     e.preventDefault(); 
     $.ajax({url: getHost() + "/j_spring_security_check", 
      type: "POST", 
      beforeSend: function(xhr) { 
       xhr.withCredentials = true; 
      }, 
      data: $("#loginForm").serialize(), 
      success: function(response, options) { 
        // We get a success from the server 
        //I need to get user name here 
      }, 
      error: function(result, options) { 
        // We get a failure from the server... 
       $(".error").remove(); 
       $('#j_username').before('<div class="error">Login failed, please try again.</div>'); 
     } 


     }); 
    }); 

我已经连接了不同的问题,所有相关文件。请访问下面的链接进行检查。

Spring Security; custom-filter and user-service-ref not working together

我找到了解决方法。

只是我做了另一个Ajax调用,然后我捕获登录的用户。

我的JavaScript函数

success: function(response, options) { 
        // We get a success from the server 
        //I need to get user name here 

    $.post('/api/loggeduser', function(data) { 
      $('#loggeduser').html(data); 
     }); 
}, 

loggeduser控制器

@RequestMapping(value = "/api/loggeduser", method = RequestMethod.POST) 
     public String printWelcome(ModelMap model, Principal principal) { 

     try { 

      String name = null; 

      if (principal!=null) { 

      name = principal.getName(); 

      } 

       model.addAttribute("username", name); 



    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    }