Web应用程序:允许超级用户冒充其他用户 - 是否有针对此的设计模式?

Jim*_* G. 7 impersonation design-patterns web-applications architectural-patterns asp.net-mvc-2

  • 在我的Web应用程序中,我想允许超级用户冒充其他用户.

我的问题:

是否有一种普遍接受的设计模式可以用来实现这一目标?

  1. 一般来说,我可以想象我需要跟踪当前用户和会话中的模拟用户.
  2. 但是你可以理解,我希望尽量减少这种变化带来的复杂性.

  3. 顺便说一下,我的应用程序是一个ASP.NET MVC 2应用程序,所以如果我可以利用任何现有的基础设施,那将是很好的.

编辑:我正在使用表单身份验证.

编辑:我还需要跟踪超级​​用户代表另一个用户行事的事实.我需要这样做有两个原因:

  1. 日志记录应记录超级用户代表另一个用户执行操作的事实.
  2. 可以想象超级用户想要返回模拟屏幕以"切换上下文"并模仿另一个用户.

编辑: @Jordão提出了一个主要可行的解决方案.我唯一担心的是 - 如果超级用户(模仿另一个用户)导航到主屏幕,并且屏幕顶部显示'Hello [User]',我希望它说'Hello [模拟用户]'为反对'你好[超级用户]'.而且我担心@Jordão的解决方案会使这个屏幕和其他具有类似要求的屏幕的实现变得更加复杂.

Jor*_*dão 3

不要冒充其他用户,而是给予超级用户足够的权限和专属接口,以便他们可以操作其他用户的数据。

如果您有日志记录或审核数据,您就知道哪个用户(普通用户或超级用户)对数据进行了操作。