La rédaction d'une autorisation de filtre pour mon application web(JSF 2.0)
Suivant quelques conseils, j'ai décidé d'écrire ma propre autorisation de filtre pour mon application web(je ne suis pas à l'aide gérée par le conteneur de sécurité donc je dois le faire de cette façon).
C'est mon premier filtre de sorte que je suis un peu confus dans la façon dont je dois la mettre en œuvre.
C'est ce que j'ai fait jusqu'à présent:
package filters;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import entities.Role;
public class RestrictPageFilter implements Filter {
FilterConfig fc;
public void init(FilterConfig filterConfig) throws ServletException {
//The easiest way to initialize the filter
fc = filterConfig;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
HttpSession session = req.getSession(true);
String pageRequested = req.getRequestURL().toString();
Role currentUser = (Role) session.getAttribute("userRole");
//Pages that are allowed with no need to login:
//-faq.xhtml
//-index.jsp
//-login.xhtml
//-main.xhtml
//-registration.xhtml
//NOW pages that are restricted depending on the type of user
//buyoffer.xhtml(Only BUYER)
//sellerpanel.xhtml(Only SELLER)
//adminpanel.xhtml(Only ADMINISTRATOR)
//HOW SHOULD I IMPLEMENT THAT??
if(currentUser != null && currentUser.getType().equals("BUYER")) {
}
if(currentUser != null && currentUser.getType().equals("SELLER")) {
}
if(currentUser != null && currentUser.getType().equals("ADMINISTRATOR")) {
}
}
public void destroy() {
//Not needed
}
}
Comme vous le voyez j'ai laissé des commentaires là où je suis coincé. Quelqu'un peut-il me donner un coup de main à la finition de ce filtre ou me donner le pseudo-code de conseils comment dois-je finir?
J'ai vu des exemples sur le web, mais aucun d'entre eux n'différents filtrage selon le type d'utilisateur.
Mauvais remercie de votre aide 🙂
mise à Jour
J'ai créé un fichier xml pour m'aider à faire le filtrage(Il est situé à l'intérieur de WEB-INF/classes)
<access>
<buyer>
<page>buyoffer.xhtml</page>
<page>faq.xhtml</page>
<page>index.jsp</page>
<page>login.xhtml</page>
<page>main.xhtml</page>
<page>registrationSucceded.xhtml</page>
</buyer>
<seller>
<page>sellerpanel.xhtml</page>
<page>faq.xhtml</page>
<page>index.jsp</page>
<page>login.xhtml</page>
<page>main.xhtml</page>
<page>registrationSucceded.xhtml</page>
</seller>
<administrator>
<page>sellerpanel.xhtml</page>
<page>faq.xhtml</page>
<page>index.jsp</page>
<page>login.xhtml</page>
<page>main.xhtml</page>
<page>registrationSucceded.xhtml</page>
</administrator>
</access>
<!-- THE REGISTRATION PAGES SHOULD NOT BE ACCESSIBLE IF THE USER IS LOGGED IN -->
J'ai lu le fichier à partir de la méthode init ().()
public class RestrictPageFilter implements Filter {
private FilterConfig fc;
private InputStream in;
public void init(FilterConfig filterConfig) throws ServletException {
//The easiest way to initialize the filter
fc = filterConfig;
//Get the file that contains the allowed pages
in = this.getClass().getResourceAsStream("/allowedpages.xml");
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
HttpSession session = req.getSession(true);
String pageRequested = req.getRequestURL().toString();
//Get the value of the current logged user
Role currentUser = (Role) session.getAttribute("userRole");
if (currentUser != null) {
}
}
public void destroy() {
//Not needed
}
}
Ouais c'est l'une des choses que je suis confus. J'ai ouvert une question sur ce sujet: stackoverflow.com/questions/5663581/... j'ai décidé d'utiliser JAXP analyseur
OriginalL'auteur sfrj | 2011-04-14
Vous devez vous connecter pour publier un commentaire.
Si vous devez autoriser l'accès d'appeler tout simplement la
si vous souhaitez restreindre l'utilisateur, puis appel
Quelques Suggestions
Le rendre configurable à l'aide de une sorte de XML du fichier de propriétés , votre code semble dur pour moi, demain il pourrait y avoir un autre ajout de la page de sorte que vous besoin de re compiler votre Filtre.
Si c'est permis alors Simplement l'utilisation de Ressort de Sécurité, il a eu beau fonctionnalités. Aussi, vous ne serez pas ré inventer la roue
Vous pouvez définir les pages qui sont autorisés pour dire que le rôle de l'administration de XML maintenant lire dans la carte à l'initialisation du contexte, de temps et d'utiliser cette carte dans le Filtre. SpringSecurity ce n'
Ok je vais essayer ça. Où dois-je conserver ce fichier XML, peut-il être à côté de web.xml fichier?
Eh bien, si vous définissez votre propre Filtre , puis vous pouvez enregistrer le fichier de n'importe où, Mais il vaut mieux le mettre dans le chemin de classe, si maven structure puis le mettre dans les ressources, ou d'autre dans le package par défaut de sorte qu'il devrait aller à
WEB-INF/classes
Je ne l'utiliser maven, je vais le mettre directement sur le chemin de classe sur WEB-INF/classes. Comment devrais-je y avoir accès? Quel serait le moyen le plus facile pour y accéder à partir de l'intérieur du filtre? Pourriez-vous me donner quelques conseils?
OriginalL'auteur Jigar Joshi