Avatar billede tuidoi Nybegynder
05. juni 2009 - 21:09 Der er 8 kommentarer og
1 løsning

JDBCRealm til loginside?

Hej

Jeg har kigget på http://www.javabog.dk/JSP og har tænkt mig at bruge JDBCRealm til at lave en side der kræver login.

Jeg har set i et eksempel at der skal laves en context.xml fil som skal placeres i META-INF. Kan den kun ligge der? eller kan den sagtens ligge i WEB-INF?


Kunne egentligt godt tænke mig at høre kort om hvad forskellen på de to mapper er. Indtil videre har jeg blot brugt WEB-INF, hvis noget ikke skulle kunne tilgås direkte fra klienten, men ja hvad bruges META-INF så til?

På forhånd tak for hjælpen! :)
Avatar billede arne_v Ekspert
05. juni 2009 - 21:16 #1
META-INF er standard for alle Java jar filer.

WEB-INF er specifik for Java web app war filer.

Som jeg laeser http://tomcat.apache.org/tomcat-6.0-doc/config/context.html skal der bruges META-INF.

Tomcat har formentligt valgt META-INF fordi den ikke bruges til andet for Java web apps.
Avatar billede tuidoi Nybegynder
05. juni 2009 - 21:48 #2
Så ligger den rigtigt, men den giver mig stadig problemer :/

Måske er det slet ikke min context.xml fil der er problemet?
Den ser ud som følgende:

<?xml version="1.0" encoding="UTF-8"?>

<Context path="/SystemWEB">
<Logger className="org.apache.catalina.logger.FileLogger" prefix="messageboardJSP." suffix=".log" timestamp="true"/>

<!-- JDBCRealm setup -->
<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
    driverName="com.mysql.jdbc.Driver"
    connectionURL="jdbc:mysql://db4free.net:3306/testDB?user=TESTuser&amp;password=TESTpass"
    userTable="brugere" userNameCol="brugernavn" userCredCol="adgangskode"
    userRoleTable="brugerroller" roleNameCol="rollenavn"/>

</Context>


Denne er taget fra et eksempel på javabog.dk, men har ændret url'en. Jeg ved egentligt ikke om den overhovedet får kontakt for når jeg trykker på min login på min loginside.jsp får jeg fejlen:


HTTP Status 404 - /WeightSystemWEB/j_security_check

--------------------------------------------------------------------------------

type Status report

message /WeightSystemWEB/j_security_check

description The requested resource (/WeightSystemWEB/j_security_check) is not available.


--------------------------------------------------------------------------------

Apache Tomcat/6.0.14



I min login form bruger jeg denne:

<form method=post action="j_security_check" >

Troede det bare var en standard side man kunne navigerer til for at lave tjekket, men det er det måske slet ikke? eller skal jeg ændre noget i web.xml?
Avatar billede arne_v Ekspert
05. juni 2009 - 21:59 #3
<Context path="/SystemWEB">

matcher ikke med

/WeightSystemWEB/j_security_check

!

Hvad er din context?
Avatar billede arne_v Ekspert
05. juni 2009 - 22:01 #4
Din web.xml skal enable security.

Eksempel:

<web-app>
  <security-constraint>
      <web-resource-collection>
          <web-resource-name>logintest open part</web-resource-name>
          <url-pattern>/open/*</url-pattern>
      </web-resource-collection>
      <auth-constraint>
          <role-name>user</role-name>
          <role-name>administrator</role-name>
      </auth-constraint>
  </security-constraint>
  <security-constraint>
      <web-resource-collection>
          <web-resource-name>logintest secure part</web-resource-name>
          <url-pattern>/secure/*</url-pattern>
      </web-resource-collection>
      <auth-constraint>
          <role-name>administrator</role-name>
      </auth-constraint>
  </security-constraint>
  <login-config>
      <auth-method>FORM</auth-method>
      <form-login-config>
          <form-login-page>/login.jsp</form-login-page>
          <form-error-page>/error.jsp</form-error-page>
      </form-login-config>
  </login-config>
</web-app>
Avatar billede tuidoi Nybegynder
05. juni 2009 - 22:10 #5
Det er den context, der er min. Jeg fjernede bare Weight, så det så mere ordenligt ud.. Men det skulle jeg så ikke have gjort. Vidste ikke det ville føre til fejl.

Min xml, ser ud som den du har lagt ind. Har dog blot nogle andre roller, men den kommer aldrig så langt for den kan ikke finde
/WeightSystemWEB/j_security_check
men denne j_security_check skal jeg oprette en fil med dette navn eller er det noget der ligger et sted i klasse biblioteket?

I eksemplet jeg følger ligger der nemlig ikke nogen fil med dette navn?
Avatar billede arne_v Ekspert
05. juni 2009 - 22:20 #6
j_security_check er indbygget
Avatar billede arne_v Ekspert
05. juni 2009 - 22:21 #7
Kan du poste:
  context.xml
  web.xml
  den URL du bruger til at tilgaa siden
?

(bare xxxx alle brugernavne/password/roller/servernavne)
Avatar billede tuidoi Nybegynder
05. juni 2009 - 22:32 #8
Jeg fik det til at virke :)

Problemet var at jeg under min test blot havde oprettet selve login.jsp og loginerror.jsp siden, men ligeså straks jeg oprettede en TestPage.jsp fil i den mappe der var sikret, så når jeg prøvede at tilgå denne direkte altså ved at åbne denne, så blev jeg så stillet videre pga. web.xml også kunne jeg ligepludselig godt logge ind og den stilte mig tilbage til TestPage.jsp


Tror måske fejlen var før at j_security_check ikke vidste hvor den skulle stille mig hen efter at den havde gennemført tjekket?

Bare lig et svar og mange tak for hjælpen!
Avatar billede arne_v Ekspert
05. juni 2009 - 22:45 #9
OK
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