是否可以在过滤器内创建JSF2会话托管bean?

时间:2012-03-30 07:07:43

标签: jsf-2 servlet-filters cas

我想在过滤器中创建并填充JSF2会话bean。 用例如下:

  • 1)用户使用CAS进行身份验证
  • 2)CAS服务器填充主体的属性并在一个中填充 属性在LDAP / AD中有用户组(将使用此信息 获得对用户的访问权限)
  • 3)仅在用户通过身份验证时调用过滤器 从主体
  • 中提取组信息
  • 4)会话bean用于包含其他主要属性 (以及使用这些属性从数据库收集的其他信息)
  • 5)如果该用户的会话bean已经存在,则不需要 完成
  • 6)如果会话bean不存在,则应该创建它(在 过滤我猜)并填充
  • 7)过滤器允许用户访问包含的网页 会话bean中的所有信息。

这可能吗? 我知道当创建会话bean时,它作为属性附加到http会话,因此很容易在过滤器中访问它,但我不知道是否可以从过滤器创建会话bean

1 个答案:

答案 0 :(得分:2)

我们做了完全相同的(OpenID身份验证)而没有手动创建会话bean。您所需要的只是将所有auth标记,id,角色和其他内容包装在一个可序列化的类中(让它为UserAuthInfo)并在身份验证后将此类的实例存储在会话映射中。稍后,在常规会话bean中,检查会话映射中是否存在此对象,初始化所有必需的数据,读取DB,执行其他操作以及从会话映射中删除UserAuthInfo实例。