IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Restrictions utilisateurs sur mon application


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 100
    Points : 80
    Points
    80
    Par défaut Restrictions utilisateurs sur mon application
    Bonjour à tous,

    j'ai développer pour mon entreprise une application web qui permet d'afficher des tables présentes sur une base de données Oracle.
    ainsi, on peut afficher ces tables, filtrer selon des critères, ajouter des entrées, en éliminer, etc...
    bref, comme sous Oracle mais sans avoir à écrire du SQL. Je me suis servi de DisplayTag pour la gestion de l'affichage.

    Désormais, je voudrais que d'autres personnes puissent utiliser cette appli. Mais je pensais restreindre les droits à certaines personnes. Tant des droits de fonctionnalités (ajout, suppression, modification) que des droits d'accès aux tables.

    Vulgairement, les pages de mon appli sont sectionnées en div.
    1 div à gauche de menu (écrit en liste et ré-écrit en intégralité sur chaque page, je ne sais meme pas si c'est optimal)
    1 div de contenu qui réagit selon les actions, les servlets.

    voici un exemple de JSP et de Servlet pour que vous voyiez à quel point tout est fait main.

    div du menu à gauche :
    Code JSP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    <div class="left">
    	<a><img src="../img/template2.bmp" width="20" height="18" class="menu_head" />configurazione</a>
     
    		<ul class="menu_body">
    			<li><a href="./bankDefault">bank defaults</a></li>
    			<li><a href="./bankParameters">bank parameters</a></li>
    			<li><a href="./bankSourceSystem">bank source system</a></li>
    			<li><a href="./bankVariables">bank variables</a></li>
    			<li><a href="./banks">banks</a></li>
    			<li><a href="./driverTypes">driver types</a></li>
    			<li><a href="./etlJob">ETL job</a></li>
    			<li><a href="./flowType">flow type</a></li>
    			<li><a href="./flowTypeDomainTable">flow type domain table</a></li>
    			<li><a href="./holding">holding</a></li>
    			<li><a href="./holdingVariables">holding variables</a></li>
    			<li><a href="./sourceSystemFiles">source system files</a></li>
    			<li><a href="./sourceSystems">source systems</a></li>
    			<li><a href="./systemStatus">system status</a></li>
    			<li><a href="./tablesHowto">tables howto</a></li>
    			<li><a href="./unloadPeriod">unload period</a></li>
    			<li><a href="./urlConnections">URL connections</a></li>
    			<li><a href="./vieLastSuccessLoad">last success load</a></li>
    		</ul>
     
    		<br>
     
    		<a><img src="../img/template2.bmp" width="20" height="18" class="menu_head_dq" />data quality</a>
    		<ul class="menu_body_dq">	
    			<li><a href="./dq">DQ</a></li>
    			<li><a href="./dqContact">DQ contact</a></li>
    			<li><a href="./dqCtrType">DQ CTR type</a></li>
    			<li><a href="./dqMailServer">DQ mail server</a></li>
    			<li><a href="./dqMailing">DQ mailing</a></li>
    			<li><a href="./dqMapping">DQ mapping</a></li>
    			<li><a href="./dqOperationType">DQ operation type</a></li>
    			<li><a href="./dqRuleMailing">DQ rule mailing</a></li>
    			<li><a href="./dqRuleTemplate">DQ rule template</a></li>
    			<li><a href="./dqSeverityLevels"> DQ severity levels</a></li>
    		</ul>
     
    		<br>
     
    		<a><img src="../img/template2.bmp" class="menu_head_report" />birt reports</a>
    		<ul class="menu_body_report">	
    			<li><a href="./filtroReport">result</a></li>
    		</ul>	
    	</div>

    div de contenu au centre:

    Code JSP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    <div class="content">
     
    <form method="post" action="" name="mainForm">
     
    <a href="../"><img alt="Index" src="../img/tornare.bmp" class="img_no"></a>
    <input type="image" src="../img/eliminare.bmp" value="submit"
    	onClick="this.form.action='CheckboxDeleteEtlJob';">
    <input type="image" src="../img/filtrare.bmp" value="submit"
    	onClick="this.form.action='filtroFormEtlJob';">
    <input type="image" src="../img/aggiungere.bmp" value="submit"
    	onClick="this.form.action='addFormEtlJob';"> 
    <input type="image" src="../img/reset.bmp"value="submit"
    	onClick="this.form.action='resetEtlJob';">
    	<input type="image" src="../img/db.bmp" alt="DB" value="submit"	onClick="this.form.action='../selectDb';"> 
     
    		 <display:table
    	name="sessionScope.liste" pagesize="10" sort="list"
    	decorator="com.servlet.etlJob.MyDeco" export="true" defaultsort="2"
    	defaultorder="ascending">
    	<display:caption id="contentList">TBL_CFG_ETL_JOB</display:caption>
     
    	<display:column property="myCheckbox"
    		title="<input name='selectall' type='checkbox' onClick='selectAll(this);'>" />
    	<display:column property="jobName"
    		title="JOB_NAME"
    		sortable="true" />
    	<display:column property="jobDirectory"
    		title="JOB_DIRECTORY"
    		sortable="true" />
    	<display:column property="tableDestination"
    		title="TABLE_DESTINATION"
    		sortable="true" />
    	<display:column property="environmentDestination"
    		title="ENVIRONMENT DESTINATION"
    		sortable="true" />
    	<display:column property="flowType"
    		title="FLOW TYPE"
    		sortable="true" />	
    	<display:column property="myDelete" title="" />
    	<display:column property="myModif" title="" />
     
    </display:table></form>
    	</div>

    et voici un bout d'une servlet dans laquelle j'écris en dur le meme menu :

    Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    out.write("</div>");
    			out.write("<div class=\"left\">");
     
    			out.write("<a><img src=\"../img/template2.bmp\" width=\"20\" height=\"18\" class=\"menu_head\" />configurazione</a>");
    			out.write("<ul class=\"menu_body\">");
    			out.write("	<li><a href=\"./bankDefault\">bank defaults</a></li>");
    			out.write("<li><a href=\"./bankParameters\">bank parameters</a></li>");
    			out.write("	<li><a href=\"./bankSourceSystem\">bank source system</a></li>");
    			out.write("<li><a href=\"./bankVariables\">bank variables</a></li>");
    			out.write("<li><a href=\"./banks\">banks</a></li>");
    			out.write("<li><a href=\"./driverTypes\">driver types</a></li>");
    			out.write("<li><a href=\"./etlJob\">ETL job</a></li>");
    			out.write("<li><a href=\"./flowType\">flow type</a></li>");
    			out.write("<li><a href=\"./flowTypeDomainTable\">flow type domain table</a></li>");
    			out.write("<li><a href=\"./holding\">holding</a></li>");
    			out.write("<li><a href=\"./holdingVariables\">holding variables</a></li>");
    			out.write("<li><a href=\"./sourceSystemFiles\">source system files</a></li>");
    			out.write("<li><a href=\"./sourceSystems\">source systems</a></li>");
    			out.write("<li><a href=\"./filtroFormSystemStatus\">system status</a></li>");
    			out.write("<li><a href=\"./tablesHowto\">tables howto</a></li>");
    			out.write("<li><a href=\"./unloadPeriod\">unload period</a></li>");
    			out.write("<li><a href=\"./urlConnections\">URL connections</a></li>");
    			out.write("<li><a href=\"./vieLastSuccessLoad\">Last Success Load</a></li>");
    			out.write("</ul>");	
     
    			out.write("<br>");
     
    			out.write("<a><img src=\"../img/template2.bmp\" width=\"20\" height=\"18\" class=\"menu_head_dq\" />data quality</a>");
    			out.write("<ul class=\"menu_body_dq\">");	
    			out.write("<li><a href=\"./dq\">DQ</a></li>");
    			out.write("<li><a href=\"./dqContact\">DQ contact</a></li>");
    			out.write("<li><a href=\"./dqCtrType\">DQ CTR type</a></li>");
    			out.write("<li><a href=\"./dqMailServer\">DQ mail server</a></li>");
    			out.write("<li><a href=\"./dqMailing\">DQ mailing</a></li>");
    			out.write("<li><a href=\"./dqMapping\">DQ mapping</a></li>");
    			out.write("<li><a href=\"./dqOperationType\">DQ operation type</a></li>");
    			out.write("<li><a href=\"./dqRuleMailing\">DQ rule mailing</a></li>");
    			out.write("<li><a href=\"./dqRuleTemplate\">DQ rule template</a></li>");
    			out.write("<li><a href=\"./dqSeverityLevels\">DQ severity levels</a></li>");
    			out.write("</ul>");
     
    			out.write("<br>");
     
    			out.write("<a><img src=\"../img/template2.bmp\" class=\"menu_head_report\" />birt reports</a>");
    			out.write("<ul class=\"menu_body_report\">");	
    			out.write("<li><a href=\"./filtroReport\">result</a></li>");
    			out.write("</ul>");
     
    			out.write("</div>");

    Bref, j'imaginais changer le css selon l'user avec des display:none en vrac
    Mais j'ai vraiment l'impression que c'est une erreur.

    Je suis à l'écoute de toute vos suggestions.

    Merci d'avance

  2. #2
    Membre éclairé Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Points : 882
    Points
    882
    Par défaut
    Pour faire un rendu suivant l'utilsateur, il y a, au choix :
    - utiliser request.getUserPrincipal(), qui provient du système de gestion des servlets, avec des if(){...};
    - implementer un login/mot de passe est stocker l'user dans la session.

  3. #3
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 100
    Points : 80
    Points
    80
    Par défaut
    merci Lorantus pour ta réponse.

    avoir divers utilisateurs issus de diverses catégories, aucun problème.

    je ne vois pas par contre comment je dois gérer l'affichage du menu selon ces droits...

    css? existe t il un librairie qui permet justement de gérer cela?

    merci merci

  4. #4
    Membre éclairé Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Points : 882
    Points
    882
    Par défaut
    L'implémentation sur Tomcat est plus complète que celle spécifié par J2EE. Néanmoins, en partant du nom , ou de son rôle, il est possible de choisir l'affichage avec un if(){..}.

    Si tu pars sur l'implémentation J2EE -avec uniquement le nom- il te faudra utiliser la session et créer un attribut dans la session qui contiendra les informations relatives à l'user connecté. Dans ce cas, c'est le même principe que précédemment, avec un if(){...}.

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    te permettra de savoir si l'utilisateur a un rol particulier (client, admin, etc). Les roles sont a définir dans le web.xml. donc tu peux faire du code genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (request.isUserInRole("admin")) 
     // afficher le menu admin

  6. #6
    Membre régulier
    Inscrit en
    Mars 2010
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 100
    Points : 80
    Points
    80
    Par défaut
    Merci pour vos réponses.
    J'ai trainé un peu au niveau du dev

    J'ai créé une class Connexion qui récupère user/password
    et dans ma table user existe un champ level pour identifier admin/super user/user etc...

    dans mes servlets, facile de faire des cas avec IF

    par contre, un peu plus "compliqué" dans les JSP :

    Code JSP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <%@page import="com.servlet.appli.CheckEnter" %>
     
    <%
                    if(Connessione.getLoginLevel()==5){
                            out.println("<ul class=\"menu_body_admin\"  id=\"racine\">");   
                            out.println("<li><a href=\"./jsp/functions\">functions</a></li>");
                            
                            out.println("</ul>");
                    }
                    %>

    donc c'est résolu, merci!

    MAIS avant de clore le sujet, une dernière question, importante.

    Dans mon 1er message, je vous mets le code de mon menu dans les JSP et dans les servlets, en dur. Or j'ai beaucoup de servlets et de JSP.
    pour le moment j'écris tout tout tout.

    N'y aurait il pas un moyen de centraliser tout?

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    l'utilisation coté JSP d'une directive include, coté servlet d'un RequestDispacther.include

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. liste autre utilisateur sur mon home
    Par fantomas261 dans le forum Administration système
    Réponses: 6
    Dernier message: 16/02/2009, 13h51
  2. Est-ce que ZF va supporter 500 connexions sur mon application ?
    Par whitespirit dans le forum Zend Framework
    Réponses: 17
    Dernier message: 04/06/2008, 14h55
  3. Reprendre le flux de Google Earth sur mon application
    Par bip98 dans le forum API, COM et SDKs
    Réponses: 0
    Dernier message: 19/03/2008, 19h09
  4. Réponses: 2
    Dernier message: 07/01/2008, 11h46
  5. Skin sur mon application
    Par Freud44 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 28/08/2007, 15h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo