Yii - Supervisor覆盖功能 - 临时验证用户

时间:2012-11-16 00:02:12

标签: php authentication yii

我有一个小问题,我试图包裹我的头。我有一个工作的应用程序和当前功能之一是一个超级管理员覆盖。即,如果请求特定动作,则主管可以输入其凭证,执行动作并且站点返回先前的用户凭证。

使用Yii框架和版权扩展,这种情况是否可行?关于如何先行的想法将不胜感激..

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

感谢

修改

这适合的情况如下:

  1. Jim正在为客户填写发票。客户需要应用折扣,但Jim在系统中没有必要的凭据来执行该任务。
  2. Mark是一名轮班主管,确实拥有正确的凭证,因此他点击了一个主管覆盖按钮,登录并将折扣应用于发票。
  3. 吉姆继续完成发票并履行他的职责。
  4. 因此,在这种情况下,当Mark单击覆盖按钮时,Jim的会话将被销毁,并允许Mark登录该站点。一旦任务完成,Marks会话就会被破坏并且Jim会恢复。 这是一种在POS系统中非常常见的情况,其中主管可以在系统中进行身份验证以执行单个任务,而无需让先前的用户重新进行身份验证。

1 个答案:

答案 0 :(得分:0)

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

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

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

它可能会有点脆弱,但破坏会话意味着你再也无法访问它了......