Comment obtenir le nom d'utilisateur anonyme si l'authentification de connexion échoue dans Java Spring Security ?

Pratik Avinash

Je suis aux prises avec un problème des dernières semaines. S'il vous plaît aider!

org.springframework.security.web.authentication.AnonymousAuthenticationFilter - SecurityContextHolder rempli avec un jeton anonyme : 'org.springframework.security.authentication.AnonymousAuthenticationToken@905571d8 : principal : anonyme User ; Identifiants : [PROTÉGÉ] ; Authentifié : vrai ; Détails : org.springframework.security.web.authentication.WebAuthenticationDetails@0 : RemoteIpAddress : 0:0:0:0:0:0:0:1 ; ID de session : 879CE33EC09255373A6D10FAF8B12EE6 ; Autorités accordées : ROLE_ANONYMOUS'

Je veux savoir pourquoi le nom d'utilisateur est anonyme si j'entre un nom d'utilisateur correct et un mot de passe incorrect ?

Je veux obtenir le nom d'utilisateur que j'ai entré dans la page de connexion. Ex- Si j'entre admin dans le nom d'utilisateur et le mot de passe incorrect, le nom d'utilisateur doit être admin et non anonyme.

Quand je le fais, auth.getName();je reçois également un utilisateur anonyme .

S'il vous plaît aider !!!

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>        

Contrôleur de connexion

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

Lorsque l'authentification échoue, il passe à la méthode ci-dessus et si j'utilise request.getParameter('username'); je reçois NULL.

Philippe Tran

Il s'agit simplement d'un message de formulaire, vous pouvez donc l'obtenir à partir des paramètres de la demande.

Par défaut, utilisez request.getParameter("j_username"). Si vous configurez un nom personnalisé pour le paramètre "username", utilisez request.getParameter("[custom_param_name]").

Ok, vous essayez donc d'obtenir le nom d'utilisateur après que la sécurité Spring ait redirigé vers la page de connexion en cas d'échec de l'authentification. Quelle version de Spring Security utilisez-vous ? Si avant 3.1.0, vous pouvez l'obtenir à partir de l'attribut de session SPRING_SECURITY_LAST_USERNAME. Sinon, vous pouvez implémenter AuthenticationFailureHandler pour le mettre en cache dans la session. Pour plus de détails, voir : Renvoyer le nom d'utilisateur et le mot de passe au formulaire de connexion grails spring security

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

TOP liste

  1. 1

    comment afficher un bouton au-dessus d'un autre élément ?

  2. 2

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  3. 3

    Je continue à obtenir l'objet 'WSGIRequest' n'a pas d'attribut 'Get' sur django

  4. 4

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  5. 5

    Conversion double en BigDecimal en Java

  6. 6

    Impossible d'accéder à la vue personnalisée pendant le test de l'interface utilisateur dans XCode

  7. 7

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  8. 8

    Passer la taille d'un tableau 2D à une fonction ?

  9. 9

    Comment obtenir l'intégration contextuelle d'une phrase dans une phrase à l'aide de BERT ?

  10. 10

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  11. 11

    CSS: before ne fonctionne pas sur certains éléments,: after fonctionne très bien

  12. 12

    Comment créer un bot à compte à rebours dans Discord en utilisant Python

  13. 13

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  14. 14

    Exporter la table de l'arborescence vers CSV avec mise en forme

  15. 15

    Comment activer le message Pylint "too-many-locals" dans VS Code?

  16. 16

    Créer un système Buzzer à l'aide de python

  17. 17

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  18. 18

    Empêcher l'allocation de mémoire dans la génération de combinaison récursive

  19. 19

    Déplacement des moindres carrés d'ajustement pour les déplacements de points ayant des problèmes

  20. 20

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  21. 21

    Microsoft.WebApplication.targets

chaudétiquette

Archive