【问题标题】:Different user restrictions in same session同一会话中的不同用户限制
【发布时间】:2011-07-09 09:53:36
【问题描述】:

我们正在开发一个网站,我们遇到了这个问题:对于这个网站,有两种类型的用户:客户和管理员。管理员可以看到所有产品(例如,包括过期产品),而客户只能看到一个子集。

我们通过对客户组和管理员组的用户限制来实现这一点。根据登录的用户显示产品。如果他属于客户组,则应用一组限制,如果他属于管理员组,则应用另一组限制。

现在,管理员可能希望从客户的角度查看网站。由于同一会话中不可能有两个用户,因此当前管理员已被系统注销,并以客户组中的用户身份登录。然而这种情况并不理想。

以前有没有人遇到过这种情况,是否有一个干净的解决方案?底层技术是基于 Tomcat 6.0.29 的定制服务器。我们正在使用 Java 进行开发。

谢谢 :) Krt_马耳他

【问题讨论】:

  • 是的,我们正在使用 Spring Security,但我不知道您提到的这种方法。管理员是否可以使用 Spring Security 来查看标准用户可以看到的内容,而无需从管理员中注销?关于 URL,网站仍处于开发阶段。
  • 你能给我一个链接吗?

标签: java html session


【解决方案1】:

@Krt_Malta:如果您使用的是 Spring Security,那么您不需要让管理员注销然后以用户身份重新登录。为此,您需要配置SwitchUserFilter...它允许用户从一个角色切换到另一个角色而无需注销,这正是您想要的。

【讨论】:

【解决方案2】:

我自己对 Web 开发还比较陌生,但是您不能在 MySQL 表中拥有一个名为“type”的字段,用户可以是“customer”还是“admin”?当有人登录时,系统会检查他们的用户类型,如果是“客户”,系统会显示客户的视图,如果是“管理员”,则显示管理员的视图。

然后,您还可以在表中添加另一个字段,该字段仅适用于“管理员”类型的用户,基本上说明管理员是在管理员模式还是客户模式下查看。 'admin' 视图中每个页面上的一个按钮可以在这个新字段的 'admin' 和 'customer' 之间切换,这可以决定显示什么视图。

这就是你要找的东西吗?

【讨论】:

  • 感谢您的输入 Taimur :) 直接与数据库交互并不是很好,我必须学习,所以虽然您的方法可行,但它并不干净。还是谢谢!
猜你喜欢
  • 2021-09-16
  • 2019-07-06
  • 1970-01-01
  • 2020-04-02
  • 2011-03-25
  • 1970-01-01
  • 1970-01-01
  • 2014-04-02
  • 1970-01-01
相关资源
最近更新 更多