我们有多个门户Employer-portal,Employee-portal和Admin-port,所有三个门户都是分别部署的。所有门户网站都遵循spring-mvc模式。我们使用了spring安全性,并使用openId进行登录和注销。

现在,我们要提供管理员门户功能,管理员可以将其模拟为雇员和雇主,并代表他们做事。

任何具有先前经验的机构都可以指导我如何进行此工作,或者可以分享我可以阅读的任何好文章以获取关于它的丰富知识。

谢谢,

最佳答案

从您的问题来看,这听起来并不像您真的想要'runAsManager'。

一种方法是使用类似“模拟”方法的东西,当然,它本身需要加以保护,也许使用方法级别的安全注释。

为此,您可以使用以下方法:

@PreAuthorize("hasRole('ROLE_ADMIN')")


本质上,您需要做的是构建一个身份验证对象,并使用该对象填充安全性上下文(ThreadLocal)。

就像是:

Authentication other = createAuthentication(someUsername); //Implement this
SecurityContextHolder.getContext().setAuthentication(other);


我可以看到这种方法的吸引力,但是,当然,这是否一个好主意取决于您允许管理员代表用户执行的操作。花钱吗?看到他们的电子邮件了吗?如果用例有效,则至少审核这种操作。

一旦这样冒充其他用户,当前用户将需要注销并再次登录以切换回自己的帐户。

08-27 15:34
查看更多