2010-05-14 6 views
4

est-il possible d'authentifier par programme un utilisateur dans Java EE 6?Authentification par programme en Java EE 6

Permettez-moi de vous expliquer avec quelques détails:

J'ai un projet Java S'existant avec Servlets et mise en veille prolongée; où je gère tout le contrôle d'authentification et accès manuellement:

class Authenticator { 
    int Id 
    string username 
} 

Authenticator login(string username, string password) ; 

void doListData(Authenticator auth) { 
    if (isLoggedIn(auth)) listData(); 
    else doListError 
} 

void doUpdateData (Authenticator auth) { 
    if (isLoggedAsAdmin(auth)) updateData() ; 
    else doListError(); 
} 

void doListError() { 
    listError() ; 
} 

Et Im intégration J2ee/JPA/servlet 3/... (Glassfish 3) dans ce projet.

Je l'ai vu comme anotations:

@RolesAllowed ("viewer") 
void doListdata (...) { 
    istData() ; 
} 

@RolesAllowed("admin") 
void doUpdateData (...) { 
    updateData() ; 
} 

@PermotAll 
void dolisterror() { 
    listerror() ; 
} 

mais comment peut manuellement je déclare, en connexion(), que mon utilisateur est dans le rôle d'administrateur et/ou spectateur?

+0

Merci pour votre ansers, login (utilisateur java.lang.String, mot de passe java.lang.String) est ce que je veux faire: au lieu de connexion dans mes utilisateurs, je dois me connecter à un rôle spécifique: login ("admin", "admin"); – Kevin

+1

D'après mon expérience, la connexion par programme peut nécessiter un code différent en fonction du serveur d'application que vous utilisez. Quelque chose à garder à l'esprit. –

Répondre

0

Merci pour votre ansers, je pris un certain temps pour comprendre, mais vous êtes à la fois à droite,

login(java.lang.String user, java.lang.String password) 

est ce que je veux faire. Au lieu de connexion dans mes utilisateurs, je dois connecter un rôle spécifique:

login("admin", "admin") ; 
... 

:)

+0

Modifiez votre question initiale si vous souhaitez fournir des commentaires ou une question plus détaillée. Ou ajoutez des commentaires à des réponses spécifiques. – ewernli

+0

Merci, j'étais un peu confus avec deux comptes (je pensais que le premier message était anonyme et donc pas éditable) – Kevin

1

d'abord, assurez-vous que vous utilisez Servlet 3.0/3.1. Servlet 2.4 n'a pas la méthode de connexion

@WebServlet(name="LoginServlet", urlPatterns={"/LoginServlet"}) 
    public class TutorialServlet extends HttpServlet { 
     protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     response.setContentType("text/html;charset=UTF-8"); 
     String user = request.getParameter("user"); 
     String password = request.getParameter("password"); 
     //TODO check is user and password not null 

     try (PrintWriter out = response.getWriter();){ 
      request.login(user, password); 
      //perhaps redirect to another page on success 
     } catch (ServletException e) { 
      //perhaps redirect to another page to login failure 
      throw new ServletException(e); 
     } 
     } 
    } 
Questions connexes