Authentication 您将如何实施;“以不同用户的身份查看网站”;特征?

Authentication 您将如何实施;“以不同用户的身份查看网站”;特征?,authentication,web-applications,Authentication,Web Applications,我们正在为一个网站设计一个功能,允许一些工作人员以另一个注册用户的身份查看我们的网站。 我真的很想听听那些已经考虑过这种功能或实现类似功能的人的意见 这应该是一个社区wiki。如果可能的话,我会把它标记为一个。我以前用过两种方法 最简单的方法是只允许拥有足够特权的人以任意用户身份登录,而无需密码。这只是一个会话登录,完全用你的伪装来取代你原来的样子。您可以通过注销并再次登录来恢复自我 另一种方法是在会话中保留一个标志,上面写着“我真的是用户ABC”,并在适当的管理页面上检查该标志(该机制与此无关

我们正在为一个网站设计一个功能,允许一些工作人员以另一个注册用户的身份查看我们的网站。 我真的很想听听那些已经考虑过这种功能或实现类似功能的人的意见


这应该是一个社区wiki。如果可能的话,我会把它标记为一个。

我以前用过两种方法

最简单的方法是只允许拥有足够特权的人以任意用户身份登录,而无需密码。这只是一个会话登录,完全用你的伪装来取代你原来的样子。您可以通过注销并再次登录来恢复自我

另一种方法是在会话中保留一个标志,上面写着“我真的是用户ABC”,并在适当的管理页面上检查该标志(该机制与此无关,但通常可以在大多数框架中巧妙地完成,而且基本上是不可见的),但将会话用户切换到用户XYZ。将使用与第一种相同的“跳过密码”机制

后者更为复杂,但无需注销/登录,并提供了一些不错的技巧,比如在iframe中运行站点,保持管理员菜单可见,以便在特殊模式下“退出”等等。

我看到了两种方法:

  • url参数“changeToUser=login”。过滤器验证您是否有足够的权限更改您的身份,然后在春季切换(比如)您的校长。如果需要,您可以向会话添加标志,该标志指示您的真实id,并且您有权反复切换。如果没有该标志,您将无法在不注销的情况下再次切换。 此方法在测试流应用程序时非常有用(第一个用户执行某项操作,然后第二个用户响应等)。在dev/uat服务器上,您的应用程序可以呈现适当的链接,只需单击一下即可切换到所需的用户

  • 您在登录期间更改了id。您使用伪造的登录名,例如我的登录名#login-of-user-i--假装和您的真实密码。您只需在链中的ldap验证器(或您使用的任何验证器)之前添加另一个验证器


  • 第二种方法适用于没有flows/jbpm进程的小型应用程序,并且您更愿意使用此功能来做一些事情,因为真正的用户生病/外出,目前无法登录。但是,当您想要测试需要大量开关的flow应用程序时,第一个解决方案要好得多,尤其是渲染链接

    谢谢您的回答。“有特权的用户”指的是角色或声明?如果(管理器)显示允许第二次登录的附加ui元素?你能链接你实现这种二次登录的站点吗?@AlexanderTaran没有一个公共站点会向你公开该功能,因为你没有特权,所以没有。它们都是基于角色或标志的:“我是否有权以其他用户的身份登录”,许多是“我是否有权以某种类型的用户的身份登录”。是的,该功能始终有一个UI元素,否则实际使用该功能将非常困难。