我们有多个门户雇主门户,员工门户和管理门户网站,所有三大门户网站分别部署。 所有门户遵循弹簧MVC模式。 我们用春天的安全性和使用OpenID的登录和注销。
现在,我们想给管理员的门户功能,管理员可以冒充为雇员和雇主并代表他们做的事情。
与以前的经验任何机构可以引导我如何进行这项工作,或者可以共享,我可以读出了它获得良好的知识的任何好文章。
谢谢,
我们有多个门户雇主门户,员工门户和管理门户网站,所有三大门户网站分别部署。 所有门户遵循弹簧MVC模式。 我们用春天的安全性和使用OpenID的登录和注销。
现在,我们想给管理员的门户功能,管理员可以冒充为雇员和雇主并代表他们做的事情。
与以前的经验任何机构可以引导我如何进行这项工作,或者可以共享,我可以读出了它获得良好的知识的任何好文章。
谢谢,
从你的问题,它听起来并不像你真的想“runAsManager”。
一种方法是使用类似的“冒充”的方法,这本身就需要保护,当然,也许使用方法级别的安全注解。
对于这一点,你可以使用这样的:
@PreAuthorize("hasRole('ROLE_ADMIN')")
从本质上讲,你需要做的是建立一个认证对象,并填充安全上下文(ThreadLocal的)这一点。
就像是:
Authentication other = createAuthentication(someUsername); //Implement this
SecurityContextHolder.getContext().setAuthentication(other);
我可以看到这种做法的吸引力,但当然,它是否是一个好主意取决于你允许管理员代表用户做什么。 花自己的钱? 看到自己的邮件? 如果使用的情况下是有效的,至少审计这种操作。
一旦冒充这样其他用户,当前用户将需要注销并重新登录,切换回自己的账户。