j_security_check

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!!!

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:

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

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:

Mais que j_security_check, estude JAAS :wink:

Alguem poderia saber qual seria o erro??

meu server.xml

[code]<?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" />

			&lt;/Context&gt;
        &lt;/Host&gt;
    &lt;/Engine&gt;
&lt;/Service&gt;

</Server>[/code]

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)

Opa,

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

:okok:

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