我使用的是“versioned history table”SQLAlchemy mixin,描述如下:http://docs.sqlalchemy.org/en/latest/orm/examples.html#module-examples.versioned_history
它工作得很好,向记录更改时间戳的history表添加了“changed”列,但我还需要记录谁更改了记录(审计跟踪)。在
在金字塔中,如果使用金字塔中可用的典型身份验证和授权子系统,request.authenticated_userid
中通常可用。在
太好了。但是如何让历史映射器(mixin的一部分)利用这个值呢?在
也就是说,除了changed
列之外,我希望changed_by
(request.authenticated_userid
)列在_history
表中。最好不要手动将其添加到历史表记录中。在
我想出了解决办法:
history_meta.py
包含为before_flush
SQLAlchemy事件注册的create_version
函数(由mixin中定义的versioned_session
)注册。在在
create_version
中,必须获取当前事务:用户在
current.user
中可用。在我不是SQLAlchemy专家,但我确实在SLQAlchemy中使用了Pylons Pyramid,这就是我从活动中访问userid的方式(下面只是为了展示这个想法):
相关问题 更多 >
编程相关推荐