我们有多个门户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);
我可以看到这种方法的吸引力,但是,当然,这是否一个好主意取决于您允许管理员代表用户执行的操作。花钱吗?看到他们的电子邮件了吗?如果用例有效,则至少审核这种操作。
一旦这样冒充其他用户,当前用户将需要注销并再次登录以切换回自己的帐户。