2013-09-05 89 views
1

我有一個JPA實體,稱爲Member。我想這個實體實施春季安全UserDetails實現自定義JPA基於UserService什麼是實施春季安全的UserDetails JPA實體的影響?

之前這樣做,我有一個值得關注的幾點,我想排序:

  • Member實體已經得到了相當多的性能。這Member現在實現UserDetails,因此被存儲到HttpSession中的事實可以(見HttpSessionSecurityContextRepository影響會話使用顯著
  • 我可以通過調用SecurityContextHolder.getContext().getAuthentication().getPrincipal();來檢索當前登錄的Member嗎?當它們在其他位置更新時,希望其所有屬性保持正確同步

回答

1
impact session usage significantly? 

expect all its properties to remain synchronized properly when they are updated elsewhere? 

不,你必須來管理自己...,即當你的地方更新,確保您在內存也更新實例:

Member member = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); 
member.setYourField(yourValue); // 
+0

感謝您的輸入寧姆。嗯,這對大型應用程序來說並不可行。有沒有更簡單的方法呢? – balteo

+0

@balteo沒有,校長被添加到登錄環境,在這之後的任何變化,你就必須做yrself – NimChimpsky