Java Spring Securityでログイン認証が失敗した場合にanonymousUserユーザー名を取得するにはどうすればよいですか?

プラティック・アビナッシュ

私はここ数週間の問題に苦しんでいます。助けてください !

org.springframework.security.web.authentication.AnonymousAuthenticationFilter-匿名トークンが入力されたSecurityContextHolder:'org.springframework.security.authentication.AnonymousAuthenticationToken@905571d8:プリンシパル:anonymousUser ; クレデンシャル:[保護]; 認証済み:true; 詳細:org.springframework.security.web.authentication.WebAuthenticationDetails @ 0:RemoteIpAddress:0:0:0:0:0:0:0:1; SessionId:879CE33EC09255373A6D10FAF8B12EE6; 付与された権限:ROLE_ANONYMOUS '

正しいユーザー名と間違ったパスワードを入力した場合、ユーザー名がanonymousUserである理由を知りたいですか?

ログインページに入力したユーザー名を取得したい。例-ユーザー名adminを入力し、パスワードが間違っている場合、ユーザー名はanonymousUserではなくadminになります。

私がやるときauth.getName();も、私は取得していanonymousUserを

助けてください !!!

Login.jsp

<form method="post" action="<c:url value='j_spring_security_check' />">
<div class="row">
  <div class="col-md-offset-5 col-md-3">
    <div><h2>Login Here</h2> </div>
        <div class="form-login">
        <h4 style="color: red">${message}</h4>
        <input type="text" name="username" id="userName" class="form-control input-sm chat-input" placeholder="Username" required="required" pattern="[0-9]{0,10}" title="Username should not be greater than 10 letters and it should be Alps ID"/>
        </br>                                                   
        <input type="password" name="password" id="userPassword" class="form-control input-sm chat-input" placeholder="Password" required="required" pattern="[A-Za-z0-9!$#%]{8,20}" title="Password should contain A-Z a-z 0-9 ! $ # %"/>
        </br>              
       <!--  <!-- CAPTCHAA -->
        <div class="wrapper">
        <span class="group-btn">                          
            <input type="submit" id="login" value="Login" class="btn btn-primary btn-md"/><!-- <a href="#" class="btn btn-primary btn-md">login <i class="fa fa-sign-in"></i></a> -->                
        </span>
        </div>
        </div>

    </div>
</div>
</form>        

LoginController

@RequestMapping("login")
public ModelAndView getLoginForm(
        String authfailed,
        String logout, String denied,HttpServletRequest request, HttpServletResponse response) 
        throws ClassNotFoundException, SQLException, UsernameNotFoundException, IOException {
        String message = "";


    if (authfailed != null) {           
        message = "Invalid username or password, try again !";

        HttpSession session = request.getSession(true);
        String uname = (String) session.getAttribute("username");

        PrintWriter out = new PrintWriter(System.out);          
        //response.sendRedirect("/incidentManagementPortal/PasswordReset");

    } else if (logout != null) {
        request.getSession().invalidate();
        eraseCookie(request,response);
        message = "Logged Out successfully, login again to continue !";

    } else if (denied != null) {
        message = "Access denied for this user !";

    }           
    return new ModelAndView("login", "message", message);
}

認証が失敗した場合、上記のメソッドに進み、request.getParameter( 'username');を使用している場合。NULLを取得しています。

フィリップ・トラン

これは単なるフォーム投稿であるため、リクエストのパラメータから取得できます。

デフォルトでは、request.getParameter( "j_username")を使用します。パラメータ「username」のカスタム名を設定する場合は、request.getParameter( "[custom_param_name]")を使用します。

さて、Springセキュリティが認証に失敗したためにログインページにリダイレクトした後、ユーザー名を取得しようとしています。どのSpringSecurityバージョンを使用していますか?3.1.0より前の場合は、セッション属性SPRING_SECURITY_LAST_USERNAMEから取得できます。そうでない場合は、AuthenticationFailureHandlerを実装してセッションにキャッシュできます。詳細については、以下を参照してください。ログインフォームにユーザー名とパスワードを返すgrails spring security

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ