我们有多个门户 Employer-portal、Employee-portal 和 Admin-portal ,这三个门户都是单独部署的。所有门户都遵循 spring-mvc 模式。我们使用了 spring security 并使用 openId 进行登录和注销。
现在我们希望提供管理门户功能,管理员可以模拟雇员和雇主并代表他们做事。
任何有经验的人都可以指导我如何处理它,或者可以分享任何好的文章,我可以阅读这些文章以获得对它的良好了解。
谢谢
从你的问题来看,听起来你并不真正想要“runAsManager”。
一种方法是使用“模拟”方法之类的方法,当然,该方法本身需要受到保护,可能使用方法级安全注释。
为此,您可以使用以下内容:
@PreAuthorize("hasRole('ROLE_ADMIN')")
本质上,您需要做的是构建一个身份验证对象并用它填充安全上下文(ThreadLocal)。
类似于:
Authentication other = createAuthentication(someUsername); //Implement this
SecurityContextHolder.getContext().setAuthentication(other);
我可以看到这种方法的吸引力,但是当然,这是否是个好主意取决于您允许管理员代表用户执行哪些操作。花他们的钱?看到他们的电子邮件吗?如果用例有效,至少审核此类操作。
一旦像这样冒充其他用户,当前用户将需要注销并再次登录才能切换回自己的帐户。
我是一名优秀的程序员,十分优秀!