Acessar Managed Bean a partir de um Filter

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.

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?

==> 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:

&lt?xml version="1.0" encoding="UTF-8"?&gt

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

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”)