Avatar billede madseksperten Nybegynder
28. februar 2014 - 12:06 Der er 8 kommentarer og
1 løsning

forbliv logget ind cookie

Hejsa.

Jeg har fået oprettet mig en cookie, som virker helt efter planen. Det er jo sådan set også herligt. Men hvis jeg har en hjemmeside med 400 sider, så vil jeg gerne have at brugeren forbliver logget ind, indtil den enten er timeout eller man trykker på en knap: "Log ud". Jeg er ikke sikker på det, men den cookie skal vel oprettes første gang når brugeren bliver succesfuldt logget ind? Hvordan kommer jeg bedst igang med at få lavet dette? Kan man gøre det i JQuery, servlet eller?

Mvh Mads
Avatar billede madseksperten Nybegynder
28. februar 2014 - 12:23 #1
Lige en rettelse. Pyt med det timeout. Det jeg mente er at når browseren lukkes eller man trykker lod ud, så skal der logges ud på hjemmesiden. Min cookie som jeg har lavet ser sådan ud:

package ExamplePackage;

import java.io.IOException;
import java.util.Date;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/CookieUsageServlet")
public class CookieUsageServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }
   
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Cookie cookie = getCookie(request, response);
        printResponse(response, cookie);
    }
   
   
    private Cookie getCookie(HttpServletRequest request, HttpServletResponse response) {
        Cookie cookie = null;
        Cookie[] cookiesArray = request.getCookies();
        if(cookiesArray != null) {
            for(int x = 0; x < cookiesArray.length; x++) {
                if(cookiesArray[x].getName().equals("test_cookie")) cookie = cookiesArray[x];
            }
        }
        if(cookie != null) {
            System.out.println("cookie retrieved");
        } else {
            int timeToExpireCookie = new Integer(getServletContext().getInitParameter("time-to-expire-cookie")).intValue();
            cookie = new Cookie("test_cookie", Long.toString(new Date().getTime()));
            cookie.setMaxAge(timeToExpireCookie);
            cookie.setPath(request.getContextPath()); // Sti til login
            System.out.println("Cookie created...");
            response.addCookie(cookie);
           
        }
        return cookie;
    }
    private void printResponse(HttpServletResponse response, Cookie cookie) throws IOException {
        PrintWriter printWriter = response.getWriter();
        response.setContentType("text/html");
        printWriter.println("<html>");
        printWriter.println("<head><title>Cookie In JAVA servlet</title></head>");
        printWriter.println("<body>");
        printWriter.println("<cookie name: " + cookie.getName() + "<br>");
        printWriter.println("<cookie value: " + cookie.getValue() + "<br>");
        printWriter.println("<time to expire cookie in seconds: " + cookie.getMaxAge() + "<br>");
        printWriter.println("</body>");
        printWriter.println("</html>");
       
       
    }

}
web.xml:
<context-param>
          <param-name>time-to-expire-cookie</param-name>
          <param-value>20</param-value>
  </context-param>
Avatar billede arne_v Ekspert
28. februar 2014 - 20:30 #2
bemaerk at:

cookie != session
session != logged in status

foerste JSP side der vises vil saette en cookie ved navn jsessionid

den cookie forsvinder naar browseren lukkes

server opretter et session objekt samtidigt med at den saetter cookie i response

browser sender saa den cookie med alle efterfoelgende requests og serveren finder det rigtige session objekt for de requests baseret paa session id

session forsvinder nar noget kode kalder invalidate eller at den session timer ud (typisk efter 30 minutter uden nogen requests) - at session forsvinder betyder at serveren nedlaegger session objektet

container eller kode kan bruge session (objektet) til at holde styr paa om bruger er logget ind eller ej

men login og logout styres paa et hoejere niveau

ved application managed security saa gemmer applikationen noget i session ved successfuld login og sletter igen ved logud

hvis session nedlaegges saa fosvinder login status ogsaa

hvis session cookie forsvinder saa kan session ikek laengere findes
Avatar billede madseksperten Nybegynder
01. marts 2014 - 22:09 #3
Hej Arne.

Jeg har læst rundt omkring med de ting du har skrevet her. Sådan som jeg hele tiden har forstået det, er at der oprettes en cookie når en bruger logger ind på en fx shop. Her kan han i toppen af siden se han er logget ind, hvilket er en cookie som bliver oprettet når han logger ind på sin profil, og som destroy når siden lukkes eller der trykkes ud.

Er det helt forkert forstået?
Avatar billede madseksperten Nybegynder
01. marts 2014 - 22:10 #4
Det vil sige at det er den pågældende cookie som styrer om man er logget ind eller ikke?
Avatar billede arne_v Ekspert
02. marts 2014 - 02:38 #5
Det er ikke saadan man normalt goer.

Normal har man en cookie som markerer browser sessionen.

Og login status styres saa via session objektet der eksisterer server side.

Cookie bruges kun til at finde det rigtige session objekt med.
Avatar billede madseksperten Nybegynder
03. marts 2014 - 15:54 #6
Hej Arne. Undskyld den lange svar tid. Jeg har så mange bolde i luften lige nu med det programmering, at det er svært at jonglere med dem. Har en masse løse ender, som skal bindes sammen. Det kommer forhåbentligtvis indenfor de næste 3 uger.. Er det nogle ala dette her jeg skal kigge på? :

http://www.openlogic.com/wazi/bid/314280/Container-managed-security-for-Java-web-applications
Avatar billede madseksperten Nybegynder
09. marts 2014 - 10:04 #8
jeg prøver at kigge noget mere på det. Mange tak for det Arne. Ligger du et svar?

Mvh Mads
Avatar billede arne_v Ekspert
09. marts 2014 - 22:51 #9
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester