j_security_check

7 respostas
C

Vi uma aplicação que utilizava j_security_check e achei bastante interessante, porém não sei por onde começar, será que alguém poderia me dar um luz??? :lol:

Obrigado!!!

7 Respostas

M

primeiro de tudo, tu tens q criar algum usuário que vai se logar na tua webapp. E isso é dependente do container, por ex, se estiver usando o Tomcat, tu vai declarar em /conf/tomcat_users.xml, por ex:

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="member"/>
  <user username="member" password="member" roles="member"/>
</tomcat-users>

depois tu tem q definir um auth-method no teu web.xml, por ex:

<login-config>
  <auth-method>BASIC</auth-method>
</login-config>

depois, tem q definir as role q vai poder acessar determinados resources e por quais metodos http, tb no web.xml:

<security-role>
  <role-name>member</role-name>
</security-role>

dai dizer quais são os constraint resources, tb no web.xml:

<security-constraint>

    <web-resource-collection>
      <web-resource-name>FooConstraint</web-resource-name>

      <url-pattern>/*</url-pattern>
      <http-method>GET</http-method>
      <http-method>POST</http-method>
    </web-resource-collection>

    <auth-constraint>
      <role-name>member</role-name>
    </auth-constraint>
  </security-constraint>

ai tu define no web.xml as paginas q vão ser de login e erro:

<login-config>
  <auth-method>FORM</auth-method>
  <form-login-page>/login.jsp</form-login-page>
  <form-error-page>/error.jsp</form-error-page>
</login-config>

e, finalmente, o seu form:

<form name="foo" action="j_security_check" method="post">
 <input type="text" name="j_username"/>
 <input type="text" name="j_password"/>
</form>

Bele??? hehaeheahea, tem muito detalhe nisso tudo cara… se enrolar muito pode postar, se quiser algo mais completo pra qualquer coisa disso ai, consulte a especificação… ou poste tb :slight_smile:

C

Com certeza Matheus ainda tenho algumas dúvidas, por exemplo quanto ao meu banco, eu preciso criar quantas tabelas?? no meu caso eu tenho so uma pra usuarios.

Valeu

M

Cara,

usando pelo banco, você precisará de apenas uma tabela que tenha no mínimos três colunas: login, senha e papel.

veja este exemplo:

<Realm className="org.apache.catalina.realm.JDBCRealm" driverName="org.gjt.mm.mysql.Driver" connectionURL="jdbc:mysql://localhost:3306/teuBanco" connectionName="userName" connectionPassword="password" userTable="tuaTabela" userNameCol="id_login" userCredCol="ds_senha" userRoleTable="tuaTabela" roleNameCol="papel" />

Obs.: este código deve ser colocado em TOMCAT_HOME/conf/server.xml.

:okok:

P

Mais que j_security_check, estude JAAS :wink:

C

Alguem poderia saber qual seria o erro??

meu server.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--This file, generated by JBuilder, may be deleted and regenerated at any time.-->
<Server debug="0" port="8081" shutdown="SHUTDOWN">
    <Service name="Tomcat-Standalone">
        <Connector acceptCount="10"
            className="org.apache.catalina.connector.http.HttpConnector"
            connectionTimeout="60000" debug="0" maxProcessors="75"
            minProcessors="5" port="8080"/>
        <Engine debug="0" defaultHost="localhost" name="Standalone">
            <Host appBase="C:\marcelo\projeto\Tomcat\conf"
                debug="0" name="localhost" unpackWARs="false">
                <Context debug="0"
                    docBase="C:\marcelo\projeto\defaultroot"
                    path="" workDir="C:\marcelo\projeto\Tomcat\work">
					<Realm  className="org.apache.catalina.realm.JDBCRealm" debug="99"
                  driverName="org.postgresql.Driver"
	            connectionURL="jdbc:postgresql://10.11.0.2:5432/database;user=usuario;password=senhabanco"
                  userTable="usuarios" userNameCol="login" userCredCol="senha"
	          userRoleTable="usuariogrupo" roleNameCol="grupo" />

				</Context>
            </Host>
        </Engine>
    </Service>
</Server>

e olha o erro ai

LifecycleException: Exception opening database connection: java.sql.SQLException: org.postgresql.Driver
at org.apache.catalina.realm.JDBCRealm.start(JDBCRealm.java:615)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1108)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3345)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:614)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:343)
at org.apache.catalina.core.StandardService.start(StandardService.java:388)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:506)
at org.apache.catalina.startup.Catalina.start(Catalina.java:781)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:681)
at org.apache.catalina.startup.Catalina.process(Catalina.java:179)
at java.lang.reflect.Method.invoke(Native Method)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:243)

----- Root Cause -----

java.sql.SQLException: org.postgresql.Driver
at org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:538)
at org.apache.catalina.realm.JDBCRealm.start(JDBCRealm.java:613)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1108)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3345)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:614)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:343)
at org.apache.catalina.core.StandardService.start(StandardService.java:388)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:506)
at org.apache.catalina.startup.Catalina.start(Catalina.java:781)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:681)
at org.apache.catalina.startup.Catalina.process(Catalina.java:179)
at java.lang.reflect.Method.invoke(Native Method)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:243)

M

Opa,

cara, coloque o .jar do postgree ai na pasta common/lib do teu tomcat e corra para o abraço!

:okok:

C

Valeu mesmo Marcos…pensei q o .JAR do postgres so necessiatva no meu projeto, mas pensando direito tem q ter no Tomcat tb

Valeu mesmo kra

Criado 12 de agosto de 2005
Ultima resposta 17 de ago. de 2005
Respostas 7
Participantes 4