Olá a todos
Estou desenvolvendo uma aplicação utilizando JSF + Spring e estou no parte de login de usuários. Estou desenvolvendo o login da seguinte forma: criei uma classe UserSession, defini a mesma como um bean com escopo de sessão no Spring e injeto este bean em todos os meus managed beans. O que vocês acham desta abordagem?
Mas o meu problema é o seguinte: estou desenvolvendo um Filter, que para todas as requisições ele irá verificar se o usuário está logado ou não. O problema é que para eu fazer esta verificação eu preciso acessar o objeto userSession localizado em meus managed beans. Como eu faço para acessar um manager bean a partir de um filter?
Desde já agradeço a atenção de todos.
chicocx
Novembro 17, 2006, 12:31am
#2
do mesmo jeito que vc faria com qualquer objeto que estivesse no escopo do seu managedBean. Ex.:
request.getSession().getAttribute … -> para secao
request.getAttribute… -> para requisicao
etc, etc, etc
lembrando que o nome da variavel no escopo é o mesmo que vc declarou no faces-config.xml
Olá Chico, eu utilizei o seguinte comando para recuperar a sessão, conforme você me respondeu:
req.getSession().getAttribute("userSession")
Porém ele sempre retorna NULL.
O meu objeto de sessão está declarado no faces-config.xml como userSession.
Existe alguma alteração que eu deva fazer?
chicocx
Novembro 17, 2006, 11:49am
#4
==> posta o faces-config.xml
==> outro detalhe é que o JSF instancia o managedBean e o coloca na secao apenas quando vc acessa ele (via a pagina jsf) pela primeira vez
O faces-config.xml está da seguinte forma:
<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd" version="1.2">
<application>
<variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>
<locale-config>
<default-locale>pt_br</default-locale>
<supported-locale>pt_br</supported-locale>
</locale-config>
<message-bundle>ApplicationResources</message-bundle>
</application>
<navigation-rule>
<from-view-id>/login.jsp</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/index.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>error</from-outcome>
<to-view-id>/login.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/index.jsp</from-view-id>
<navigation-case>
<from-outcome>add</from-outcome>
<to-view-id>/form.jsp</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-outcome>update</from-outcome>
<to-view-id>/form.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/form.jsp</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/index.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>cancel</from-outcome>
<to-view-id>/index.jsp</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
<managed-bean>
<managed-bean-name>login</managed-bean-name>
<managed-bean-class>br.com.addressbook.web.Login</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>userSession</property-name>
<value>#{userSession}</value>
</managed-property>
<managed-property>
<property-name>userManager</property-name>
<value>#{userManager}</value>
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>index</managed-bean-name>
<managed-bean-class>br.com.addressbook.web.Index</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>userSession</property-name>
<value>#{userSession}</value>
</managed-property>
<managed-property>
<property-name>contactManager</property-name>
<value>#{contactManager}</value>
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>form</managed-bean-name>
<managed-bean-class>br.com.addressbook.web.Form</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>userSession</property-name>
<value>#{userSession}</value>
</managed-property>
<managed-property>
<property-name>contactId</property-name>
<value>#{param.contactId}</value>
</managed-property>
<managed-property>
<property-name>contactManager</property-name>
<value>#{contactManager}</value>
</managed-property>
</managed-bean>
</faces-config>
chicocx
Dezembro 8, 2006, 9:27am
#6
Primeiramente desculpe-me a demora em responder mas é que o guj não está avisando quando alguem responde minhas mensagens … só hoje que foi ver.
voce deverá fazer o getAttribute com o nome do seu managedBean, assim:
no lugar de:
req.getSession().getAttribute(“userSession”)
use
req.getSession().getAttribute(“form”)