Archief - [PROG][JSF] session in een bean ophalen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

SK-jeetn

Legacy Member
Hallo,

Ik ben bezig met een project voor school. Ik ben bezig met de inlogprocedure bezig... Het inloggen zelf lukt al... Uitloggen op zich ook, maar daar zit nog een probleem...

Bij het inloggen moet ik dus de sessie ophalen, dit doe ik via:

httpSession.setAttribute("ActiviteitenBean", this);


Bij het uitloggen doe ik:

httpSession.invalidate();


Ik gebruik ook een filter die gaat controleren of er iets in de sessie met key (ActiviteitenBean) zit... Zoja, mag em verder gaan, zo nee wordt em terug naar de login pagina verwezen...


Het probleem is nu... Wanneer ik uitlog wordt ik naar de correcte pagina verwezen, maar wanneer ik dan via de adresbalk naar een admin pagina navigeer dan lukt dit ook... En dat mag net niet lukken...

Mijn bean:

Code:
/**
     * Deze methode wordt doorlopen wanneer er op de knop login wordt gedrukt op het loginscherm.     
     * @return - Lege string: indien foute login
     * @return - Authenticated: indien de login correct is
     */
    public String loginAction() {
        String ingelogd = "nee";

        Persoon persoon = null;
        LoginController lc = new LoginController();
        persoon = lc.login(user, paswoord);
        if (persoon != null) {
            ingelogd = "authenticated";
        }
        setIngelogdGebruiker(persoon);
        
        //FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("gebruiker", getIngelogdGebruiker());
        httpSession = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
        httpSession.setAttribute("ActiviteitenBean", this);
        //HttpSession.setAttribute("gebruiker", this);
        return ingelogd;
    }


Mijn filter:
Code:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Filter;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import javax.faces.context.FacesContext;


/**
 *
 * @author Jeremy Vanmaelsaeke
 */
public class LoginFilter implements Filter 
{
    private HttpSession httpSession;
    
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) 
            throws IOException, ServletException 
    {
        //System.out.println("In doFIlter");
        httpSession = ((HttpServletRequest)req).getSession();
        if(httpSession.getAttribute("ActiviteitenBean") == null)
        {
            req.getRequestDispatcher("login.jsp");
        }
        else
        {
            chain.doFilter(req, res);
        }
    }
}

De web.xml:
Code:
<filter>
	<filter-name>loginFilter</filter-name>
	<filter-class>Filter.LoginFilter</filter-class>
    </filter>
    <filter-mapping>
	<filter-name>loginFilter</filter-name>
	<url-pattern>/admin*</url-pattern>
    </filter-mapping>

Bavo aka Joske

Legacy Member
Het ziet er goed uit zoals je uitlegt, probeer ook
Code:
httpSession.setAttribute("ActiviteitenBean", null);

Bij het uitloggen, dan ben je zeker.

Uw systeem is wel nogal huisbereid, heb je niets gevonden op Google om websecurity aan te pakken? Java applicatieservers bieden simpele form-authentication mechanismen, zonder al die code.

Parkwachter

Legacy Member
1 vraagje toch hoor. Kleinigheid maar ipv met een string te werken kan je die methode niet beter true/false laten teruggeven.

Boris Yeltsin

Legacy Member
Parkwachter zei:
1 vraagje toch hoor. Kleinigheid maar ipv met een string te werken kan je die methode niet beter true/false laten teruggeven.

In JSF geven de action methods een string terug. Deze string wordt dan gemapped naar een andere pagina of action. Ik denk niet dat er andere types kunnen gebruikt worden.

Zonder JSF of Struts zou het idd geen slecht idee zijn om een ander type te gebruiken :)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan