2016-07-10 130 views
2

我用一個用戶管理了一個簡單的spring安全應用程序。 管理員應該能夠創建/更新/刪除數據庫上的用戶(通過休眠)。春季安全刪除用戶 - 會話仍然有效

如果用戶更新,我重裝這是當前登錄用戶的身份驗證與下面的代碼完成(根據this爲例):

SecurityContextHolder.getContext().setAuthentication(updatedAuthentication); 

我的問題是: 什麼我可以做如果用戶被刪除?如果我刪除一個用戶,已經活動會話保持活動,我不知道如何更新它們。我仍然可以導航到之前能夠訪問的每個頁面。

有沒有辦法告訴春季會議應該重新驗證或類似的?我錯過了什麼重要的事嗎?

回答

1

在每個請求上,你應該檢查你的數據庫的用戶存在。 步驟:

  1. 採取從會話的用戶ID,檢查它是在數據庫或沒有。
  2. 如果沒有在數據庫中使會話失效並再次重定向到登錄頁面。
  3. 在一個方法中包裹兩個stpes中的那些並在每個請求上調用它。 (如果常用的方法是使用或創建e Listener)

也可以查看下面的鏈接是否有幫助。 http://forum.spring.io/forum/spring-projects/security/35809-how-to-let-admin-to-force-user-to-logout

另一個有用的鏈接http://docs.spring.io/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#list-authenticated-principals

0

SecurityContextRepository

使用Spring Security 3.0,加載和存儲的安全上下文的工作,現在委託給一個獨立的戰略界面

你可以提供NullSecurityContextRepository以避免存儲安全上下文信息。

我做了這樣的事情:

@EnableWebSecurity 
public class CustomSecurityConfiguration extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 

     // Other security configuration... 

     http.securityContext().securityContextRepository(new NullSecurityContextRepository()); 
    } 

}