【问题标题】:Logging IP addresses for jsf page requests记录 jsf 页面请求的 IP 地址
【发布时间】:2013-04-01 09:04:53
【问题描述】:

我有一个正在运行的 JSF2 应用程序,现在想添加一个请求日志记录功能。

日志记录将保存到数据库,由标准用户/页面/IP 三重奏和其他生成的内容组成。

现在在托管 bean 中的 @PostConstruct 注释方法中调用 dao 方法,但这似乎是代码重复。

@PostConstruct
public void init() {
     loggingDao.save(user,page,ip);
}

如何使用托管 bean 在 jsf 端集中此日志记录/审核过程?由于这是一个横切场景,我不想将此代码添加到每个托管 bean。

编辑 这个问题有很多 cmets,这意味着它没有以正确的方式提出。

最后一次机会:我需要记录/观看我网站上的用户交互,可能是登录操作或单击按钮以列出项目(映射到支持 bean 方法)或页面导航/重定向。

我还假设我可以使用相同的架构来决定用户是否有权在网站上执行特定操作,但这是另一回事,因为它的结果会有所不同。

【问题讨论】:

  • 那么您的问题到底是什么?我不明白你的问题是什么。
  • 我也没有。我会登录托管 bean 的操作方法并在 HTTP 会话侦听器中注销。 Servlet 过滤器是处理问题的错误方法,因为不应该对每个请求都进行审计。
  • @chkal 编辑了问题,省略了 servlet 过滤器部分
  • 如果您想审核登录,请获取登录操作的挂钩。否则,我会通过侦听器连接 HTTP 会话创建和销毁以获取登录/注销事件。
  • 这很奇特。然后你就剩下 servlet 过滤器或阶段侦听器了。

标签: java jsf-2 primefaces


【解决方案1】:

您可以为此使用 servlet 过滤器或 JSF 阶段侦听器。如果您想记录每个请求,包括 CSS 和 JavaScript 资源,请使用过滤器。如果您只对 JSF 请求感兴趣,可以使用阶段侦听器。只需进入“恢复视图之前”阶段并记录您想要的任何内容。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-21
  • 2018-07-04
  • 2022-01-20
  • 1970-01-01
相关资源
最近更新 更多