2013-02-24 5 views
0

Je suis nouveau sur Java EE et je ne sais pas vraiment comment un système de connexion doit être implémenté. Disons que j'ai une base de données mysql avec l'utilisateur de la table et qu'elle a le nom d'utilisateur et le mot de passe des colonnes. Comment devrais-je implémenter un système de connexion sécurisé? Par sécurité, je veux dire la sécurité Web de base comme le mot de passe haché et la connexion SSL lorsque je vous envoie le mot de passe.Java EE simple login

Je regarde form based login mais je peux comprendre comment il est supposé obtenir les données de la base de données par la page intégrée j_security_check? N'ai-je pas besoin de définir une chaîne de connexion en quelque sorte et où puis-je définir pour utiliser le hachage et SSL alors?

J'utilise tomcat v7.0.

+0

comment protégez-vous votre URL? ce Q invite un large sujet de discussion – user1428716

+0

Que voulez-vous dire par protection d'URL. – Frozendragon

Répondre

3

Première chose: ne pas stocker les mots de passe dans la base de données. Vous pouvez stocker des hachages.

Voici une manière simple:

  1. Ajouter un formulaire avec des champs nom d'utilisateur et mot de passe.
  2. Créez un bean géré de session appelé comme exemple d'utilisateur.
  3. Créer des propriétés nom d'utilisateur et mot de passe dans le bean (ne pas oublier les accesseurs).
  4. Forme de liaison avec les propriétés que vous avez créées (par exemple dans JSF # {userBean.username}).
  5. Créez une méthode dans le bean appelé authorize.
  6. Liez la méthode avec le bouton submit sur le formulaire.
  7. Dans autoriser méthode créer un hachage de mot de passe et essayer de trouver une ligne dans la table des utilisateurs qui a un nom d'utilisateur et mot de passe du formulaire.
  8. En cas de succès redirigent vers une autre page, null le champ de mot de passe et utiliser le champ de nom d'utilisateur pour reconnaître qui est connecté.

C'est la façon la plus simple de l'autorisation d'application en Java EE je peux imaginer.

Mettez une forme comme celle-ci:

<h:form id="loginForm"> 
    <h:inputText maxlength="255" size="20" tabindex="10" value="#{userBean.login}" 
        styleClass="inputField" id="username"/> 
    <h:inputSecret maxlength="255" size="20" tabindex="20" 
        value="#{userBean.password}" styleClass="inputField" id="password"/> 
    <h:commandButton value="login" 
           action="#{userBean.validate}" id="submit"/> 
</h:form> 

Et bean géré:

@ManagedBean(name = "userBean") 
@SessionScoped 
public class UserBean { 
    private User user; 
    private String login; 
    private String password; 

    @PostConstruct 
    private void init() { 
     this.user = new User(); 
    } 

    public String validate() { 
     // Validate given login and password here 
     // When user seems to be valid assign it to this.user and return "/someFileForAuthorizedUsers.xhtml"; 
     this.login = null; 
     this.password = null; 

     return null; 
    } 
} 

Ne pas oublier accesseurs. JSF a besoin d'eux.

+0

Pourriez-vous fournir un exemple de code? – Frozendragon