1

これが私の春のログインハンドラーです

public class LoginSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler {

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

        HttpSession session = request.getSession();
        LoggedInUser logginUserObj = (LoggedInUser)authentication.getPrincipal();
        String userId = logginUserObj.getUserId();

        session.setAttribute("userId", userId);
        session.setAttribute("userName", logginUserObj.getName());
        session.setAttribute("hasPhoto", user.getProperty(UserVertex.profilePhotoUploaded.toString()));
        if(logginUserObj.getActivateLink()!=null)
            session.setAttribute("activateLink", logginUserObj.getActivateLink());

        try {
            Object referUrl = session.getAttribute("Referer_url");
            if(referUrl != null){
                session.removeAttribute("Referer_url");
                response.sendRedirect(referUrl.toString());
            }
            else
                response.sendRedirect("profile/"+userId);
        } catch (IOException ex) {
            logger.error(ex);
        }
       }
    }

私のクライアントはプレーンなhtml、jQuery(コルドバ)です。だから私の質問は、ユーザーがリクエストを行うたびに、リクエストされたユーザーがログインしているかどうかをどのように知ることができますか?

たとえば、ここにサンプルがあります:

$.ajax({
  url: "addNewpost",
  data:{}
})

ここでは、ログインしたユーザーのみが新しい投稿を追加できます。addNewpost春に休息サービスを呼び出すとき@RestController、ログインしたユーザーからのリクエストであることをどのように知ることができますか?

4

2 に答える 2

0

まず、ログインしていないときに Web アプリが 401 を無許可で返すことを確認する必要があります。

次に、JQuery を使用して、次のスニペットのように多かれ少なかれエラー コールバックを使用し、通常jqXHR.statusは 401 (未承認)であることを確認します。

$.ajax({url:url, data:{}, error: function(jqXHR, e, x){
        alert("Error #" + jqXHR.status + "\n\n\t" + x );
    });

リクエストがサーバーにログインしているユーザーからのものかどうかは、セキュリティ構成によって異なります。コントローラーを「手動で」チェックインするのではなく、構成宣言が正しいことを確認してください。

ところで、ログイン後に任意の URL にリダイレクトするかどうかはわかりません

于 2015-07-05T19:49:20.583 に答える