1

AuthenticationEntryPointとSimpleUrlAuthenticationSuccessHandlerを使用してAjax経由でユーザー認証をすでに実装しています。

次に、ログインしたユーザー名をスクリプト変数に取り込む必要があります。

誰かがこれについて私を助けてくれますか?

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>');
        }


        });
    });

別の質問に関連するすべてのファイルをすでに添付しました。それらを確認するには、以下のリンクにアクセスしてください。

春のセキュリティ; custom-filterとuser-service-refが連携していない

4

1 に答える 1

1

私は解決策を見つけました。

単に別の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);
        }); 
},

logeduserコントローラー

@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();
    }
  }
于 2013-04-02T19:30:18.110 に答える