0

我有一个小问题,我试图绕开我的头。我有一个正在运行的应用程序,当前功能之一是主管覆盖。即,如果请求特定操作,则主管可以输入他们的凭据,该操作将被执行,并且站点返回以前的用户凭据。

这种情况是否可以使用 Yii 框架和 Rights 扩展?以及如何先行的想法将不胜感激..

顺便说一句,我最初的想法是将当前用户的会话保存到数据库中,销毁它并开始一个新会话..

谢谢

编辑

适合的情况如下:

  1. 吉姆正在为一位客户填写发票。客户要求应用折扣,但 Jim 在系统中没有执行该任务所需的凭据。
  2. 作为轮班主管的 Mark 确实拥有正确的凭据,因此他单击主管覆盖按钮,登录并将折扣应用于发票。
  3. 吉姆继续完成发票并开始履行职责。

因此,在这种情况下,当 Mark 单击覆盖按钮时,Jim 的会话被破坏,并且允许 Mark 登录站点。任务完成后,Marks 会话被破坏,Jim 被恢复。这是一种在 POS 系统中非常常见的场景,主管可以在系统中进行身份验证以执行单个任务,而无需让之前的用户重新进行身份验证。

4

1 回答 1

0

您可以执行以下操作,而不是完全销毁会话:

  • 在主管登录成功时,如果当前有登录用户,则将登录用户凭据存储在某种“后备”用户帐户中
  • 用主管用户模型替换主用户模型
  • 允许主管用户执行所需的操作
  • 注销时,如果有“后备”用户,而不是破坏会话,将主用户模型替换为“后备”用户模型

那有意义吗?而不是破坏会话(这将需要您的原始用户重新登录),您可以通过交换主管模型所需的任何信息来伪造会话被破坏。

它可能会变得有点脆弱,但破坏会话意味着您无法再访问它......

于 2012-11-19T05:07:57.777 回答