2014-08-28 78 views
1

我們有多個門戶網站僱主門戶,員工門戶網站和管理門戶網站,所有三個門戶網站都是單獨部署的。所有入口都遵循spring-mvc模式。我們使用spring安全性並使用openId進行登錄和註銷。如何在春季模仿

現在我們要給管理員門戶功能,管理員可以模仿員工和僱主,並代表他們做事情。

任何具有以往經驗的人都可以指導我如何使用它,或者可以分享任何我可以讀懂的優秀文章,從而獲得良好的知識。

感謝,

+0

http://docs.spring.io/spring-security/site/docs/3.2.5.RELEASE/reference/htmlsingle/#runas – sodik 2014-08-28 10:36:37

回答

0

從你的問題,它聽起來並不像你真的想「runAsManager」。

其中一種方法是使用類似'impersonate'方法的東西,它本身需要得到保護,當然也許使用方法級別的安全註釋。

對於這一點,你可以使用類似:

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

本質上講,你需要做的是建立一個認證對象,並填充安全上下文(ThreadLocal的)這一點。

喜歡的東西:

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

我可以看到這種做法的吸引力,當然,它是否是一個好主意取決於你允許管理員代表用戶做什麼。花他們的錢?看到他們的電子郵件?如果用例是有效的,至少審計這種操作。

一旦冒充這樣的其他用戶,當前用戶需要註銷並重新登錄才能切換回自己的帳戶。

+0

我是否必須通過管理員門戶覆蓋員工和僱主門戶,否則我們可以登錄到僱主門戶網站? – 2014-08-28 14:49:37

+0

如果您使用相同的框架並擁有相同的用戶來源,那麼您是否會允許管理員用戶登錄其他兩個門戶,然後在每個門戶中提供一個方法以成爲權限較低的用戶?如果是這樣,那麼我認爲你不需要覆蓋,不。您可以使用單一MVC方法和安全服務方法在僱主/員工應用程序中提供功能。 – 2014-08-29 09:19:20