2017-01-30 1 views
0

Création d'un filtre simple pour une application Web triviale.Écriture du filtre d'interception pour l'authentification de l'utilisateur

  • connexion
  • registre
  • maison
  • fonction

si l'utilisateur n'a pas connecté en utilisant le nom de login "admin", ou d'accéder à la/des ressources à domicile ou/ressource de fonctionnalité, ils doivent être redirigés vers la page de connexion.

Cependant, il semble que je cours dans un problème de boucle de redirection. Quel est le problème avec cette approche? Je pense que c'est une approche de solution incorrecte pour une telle exigence.

public class LoginInterceptor extends HandlerInterceptorAdapter { 

    private static final Logger logger = Logger.getLogger("LoginInterceptor.class"); 

    // to be used checking session management for user. 
    @Override 
    public boolean preHandle(HttpServletRequest request,HttpServletResponse response, 
          Object handler) throws Exception { 

     logger.log(Level.INFO, "[][][][][] +++ prehandle"); 


     if (request.getAttribute("username") != null) { 
      if (request.getAttribute("username").equals("admin")) { 
       return true; 
      } else 
       response.sendRedirect("/sessionmanagement/login"); 
      return false; 
     } else if (request.getAttribute("username") == null & !request.getRequestURI().equals("/login")) { 
      // return false and redirect to login. 
      response.sendRedirect("/sessionmanagement/login"); 
      return false; 
     } 
     // return false and redirect to login. 
     response.sendRedirect("/sessionmanagement/register"); 
     return false; 
    } 
} 
+0

quel est votre modèle d'URL pour 'LoginInterceptor'? – destan

+0

Ajouter également si la condition pour vérifier si URL de demande contient/sessionmanagement, ce qui vous aidera à éviter la boucle. –

+0

/* est le modèle d'URL pour l'intercepteur – Catresl

Répondre

-1

si vous utilisez printemps, vous pouvez utiliser la sécurité du printemps pour le faire, votre utilisateur peut avoir RÔLES, donc vous ne serez pas vérifierez juste contre le nom d'utilisateur, https://spring.io/guides/gs/securing-web/ voici un guide que vous pouvez aller au-dessus il est très simple, donc vos méthodes vous avez une annotation pour vérifier quelle est l'autorité de l'utilisateur.

ici une autre chose qui peut vous aider: Spring Security with roles and permissions

http://www.journaldev.com/8748/spring-security-role-based-access-authorization-example

+0

merci pour l'information. J'aurais dû mentionner que j'essaie de le faire sans utiliser la sécurité du printemps, pour le moment. – Catresl

+0

Juste une question, pourquoi feriez-vous cela? Y a-t-il une raison? – Galeixo

+0

oui donc je peux comprendre et mettre en œuvre la fonctionnalité moi-même. – Catresl