Avatar billede pnr Nybegynder
10. april 2002 - 00:55 Der er 17 kommentarer og
2 løsninger

Problemer med at nedligge et session object for altid

Jeg har lavet en side hvor man skal logge på, når man så logger af, skal siden ikke kunne vises før man har logget på igen.

Jeg lavet følgende tag i den side der fortæller at man er logget af

<%HttpSession ses =request.getSession(true);
    ses.invalidate();
%>

Men bruger jeg tilbage knappen, virker siderne fint igen uden at jeg har logger ind. hvorfor bliver det session ikke nedlagt?
Eller hvad sker der?
Avatar billede pnr Nybegynder
10. april 2002 - 01:25 #1
Efter at have kigget lidt mere på det, har jeg fundet ud af at den gemmer de oplysninger som login siden submitter til login servletten. og derved logger den ind igen.

kan jeg ikke forhindre det?
Avatar billede erikjacobsen Ekspert
10. april 2002 - 06:17 #2
Er dine sider cachede i browseren, kan du stadig se dem.
Hvis du mener det er derfor
skal du nok tilføje kode til at forhindre caching i headeren.
Avatar billede pnr Nybegynder
10. april 2002 - 07:11 #3
Jeg har prøvet følgende kode for at forhindre cache.

  response.setDateHeader("Expires", 0);
    response.setHeader("Pragma", "no-cache");

    if (request.getProtocol().equals("HTTP/1.1"))
    {
        response.setHeader("Cache-Control", "no-cache");
    }

Men det forhindre det ikke, hvad er der af laternativer?
Avatar billede disky Nybegynder
10. april 2002 - 07:27 #4
Den bean som håndterer login osv, hvad for et scope har den ?
Avatar billede pnr Nybegynder
10. april 2002 - 07:28 #5
den er attribute
Avatar billede ppstyle Nybegynder
10. april 2002 - 09:55 #6
Den attribut du har sat, skal du manuelt fjerne igen med remove attribute, på sessionen. Dette garanterer at personen ikke kan komme ind på siderne igen. Smart er det også hvis du bruger en controller for så skal han igennem denne her controller ved hvert skift til en ny side, og du sikrer dig at indlogget personer ikke bare kan hoppe til andre sider med en direkte URL.

Kommandoen ser således ud :
    request.getSession().removeAttribute("din attribut");



mvh. Daniel
Avatar billede pnr Nybegynder
10. april 2002 - 11:25 #7
Jeg gør det du siger Daniel, jeg fjerner bare alle attributter på session stakken, istedet for bare en specifik. Men problemet er at browseren kan huske hva der er blevet submittet med fra logon vinduet. så når jeg går tilbage, kan den ikke visen siderne før jeg er kommet tilbage til logon siden, hvis jeg her trykke refresh, spørger den om den skal forsøge at lave en siden med de gamle oplysninger, siger jeg ja til det, logger den ind igen!
Avatar billede disky Nybegynder
10. april 2002 - 11:58 #8
pnr:
et password felt husker browseren ikke, så hvis du bruger sådanne et, kan den jo ikke logge ind.
Avatar billede pnr Nybegynder
10. april 2002 - 12:07 #9
jeg vil da mene at jeg bruger et password felt.
<TD>Brugernavn </TD>
        <TD>
          <input type="text" name="brugernavn" size="40">
        </TD>
      </TR>
      <TR>
        <TD>Password </TD>
        <TD>
          <p>
            <input type="password" name="password" size="40">
          </p>
        </TD>
Avatar billede pnr Nybegynder
10. april 2002 - 12:28 #10
hvad kunne der så være galt?
Avatar billede disky Nybegynder
10. april 2002 - 13:18 #11
ja den skulle være god nok så.

Det vil sige, du bruger det anti caching halløj fra højere oppe, du invaliderer session, og du bruger password feltet, korrekt ?

Hvis du gør alle de ting skulle det være mere end rigeligt.

Hvordan checker du /gemmer du information om brugeren imens de er logget ind ?
Avatar billede pnr Nybegynder
10. april 2002 - 18:08 #12
Jeg checker på et object. dvs når folk logger ind og deres brugernavn og password er godkendt, opretter jeg et object som ligges på session. så kontrollere jeg om dette object er oprettet i alle servlets og på alle jsp siderne.

Det virker fint på alle siderne pånær når jeg går tilbage til login siden, og siger refresh!
Avatar billede ppstyle Nybegynder
11. april 2002 - 09:55 #13
Hvordan har du indstillet din broswer ? Det nytter jo ikke at lave alle de tigerspring, hvis du har indstillet browseren til at huske feltkoder som password og loginnavn. Måske har jeg ikke helt ret, men det begynder,at lugte af du har et specielt program eller en fancy indstilling på din browser, der giver problemet. Som Disky siger, de ting du har gjort burde være rigeligt.


mvh. Daniel
Avatar billede pnr Nybegynder
11. april 2002 - 10:23 #14
Jeg bruger en Explorer 6.0, og har ikke ændret noget
Avatar billede ppstyle Nybegynder
11. april 2002 - 16:09 #15
Hvis du submitter med en servlet på loginsiden, kan du 100% sikre dig at folk skal igennem din servlet hvergang. Du kunne f.ex placere to objecter på sessionsstacken, hvor den ene indeholder oplysninger den bruger, der netop er pålogget, og den anden som en sikkerhed for brugeren har været omkring din controller. Det object du så bruger som sikkerhed, skal du blot fjerne hvergang han kommer op på en ny side ( Dette gør jeg med et taglib ), og selvfølgelig tilføje igen nå han kommer ned forbi controlleren, som checker om han må se siden ved at kigge på han bruger object.

Det virker for mig, jeg sender dig gerne noget kildekode, hvis du vil have det ?

Hilsen Daniel
Avatar billede pnr Nybegynder
11. april 2002 - 16:35 #16
tror du ikke problemet er at browseren husker brugernavn og password, så når man opdater siden, så logger den på som om man lige har indtastet sine oplysninger
Avatar billede ppstyle Nybegynder
12. april 2002 - 10:03 #17
Har faktisk oplevet at ting bliver cachet selvom man skriver no cache. Prøv ihvertfald lige at checke det. Men problemet er helt sikkert browserens fordi hvis du fjerne sessions attributterne KAN MAN ikke bruge dem mere. Jeg ved man kan slår alt auto halløj fra i IE under options et eller andet sted. Prøv lige at sikre dig at den ikke er sat til at huske passwords og formfelter.

Hilsen Daniel
Avatar billede pnr Nybegynder
07. maj 2002 - 17:19 #18
jeg lukker lige dette spørgsmål, tak for hjælpen!
Avatar billede disky Nybegynder
07. maj 2002 - 17:21 #19
selv tak
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