【问题标题】:Auditing and redisplaying user interactions in Angular application在 Angular 应用程序中审核和重新显示用户交互
【发布时间】:2018-09-28 00:17:36
【问题描述】:

我们正在开发一个在 UI 中使用 Angular 5 的应用程序。需要审核用户交互并在需要时显示所有填写的表格。因此,如果用户填写并提交了表单,请求的整个 JSON 将被保存在某个地方(也许在 Mongo-DB 中)。在另一个菜单中,一些版主用户可以搜索已审核的请求并重新显示用户填写的表单。

虽然后端是使用 Spring Boot 开发的,但我正在考虑使用 Servlet 过滤器来审核所有 JSON REST 请求。在审核模式下查看时,我也在考虑disable FormGroup 对象。

但有些事情我不知道如何处理。我想为每个表单提供两项服务,一项从 mongo-db 获取数据(以在审计模式下查看),另一项以正常形式从 RDBMS 获取数据。 另一个问题是我想在模式中以审核模式显示表单,我想知道如何做到这一点,因为在这种模式下我不能使用正常的路由。是否有可能没有大量重复代码?

【问题讨论】:

    标签: angular spring-boot audit


    【解决方案1】:

    后端(SpringBoot 应用程序):我有一个类似的要求(不过只针对后端),我们的方法是创建一个注释 @Auditable 并使用 AOP 切入点来捕获请求/response 注释附加到的方法,然后将其存储在审计文档(mongodb)中。我们还让它异步,这样它就不会影响实际的响应时间。

    UI (Angular):是的,无需复制代码即可。您需要创建两个父组件,每个组件都与不同的服务交互。 一个用于 RDBMS,另一个用于 Mongodb。 这些父组件将模型对象传递给使用@Input 查看表单的子组件。除了模型对象,您还需要传递一个布尔值来禁用或不禁用。您将能够使用从父级传递的模型对象创建FormGroup,也可以使用FormGroup 上的disable 属性相应地禁用它。

    不确定您使用的是哪个 css 库,但对于 Modal,您可以使用材料设计、引导程序、ng2-bootstrap、primeng 等轻松实现。 与 MongoDB 交互的父组件应该简单地将子组件包裹在 Modal 中。

    您的问题可以通过许多不同的方法来解决,以上只是其中一种。

    【讨论】:

    • 感谢您的回复,使用 @Auditable 这是一个 Hibernate/Envers 注释不是很好,因为我想存储审计信息,无论主要交易成功还是失败。对于第二部分,问题是我们的应用程序中有很多表单(超过 50 个表单),并且每个表单都有不同的服务。你能详细描述一下这两个父组件如何处理这个问题吗?
    • 目前Hibernate 中没有名为@Auditable 的注解,我想您可能会将它与@AuditTable 混淆,@AuditTable 是用于定义模式和表名的类级别注解。无论如何,这个想法是使用 AOP 来捕获请求和响应以进行审计,您可以随意命名 Annotation。对于第二部分,您有我们可以使用的示例代码吗?这样会更容易。
    • 抱歉,Envers 注释是@Audited
    猜你喜欢
    • 2016-10-26
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多