2015-12-03 37 views
1

我們使用spring安全性的spring引導來實現查詢接口。我想要做的是隻允許每個用戶一次運​​行固定數量的查詢。查詢可能需要很長時間,用戶可能會發送重複請求的速度超過我們的響應速度。我希望控制器一次只能計算一個子集請求,我將不得不實施一些邏輯來確定哪些請求可以響應。在控制器中獲取Spring引導/安全性的會話標記

爲此,我需要知道給定用戶的會話令牌。在控制器的方法中有沒有簡單的方法?

回答

6

如果你想在控制器獲得的sessionId您可以使用 RequestContextHolder.currentRequestAttributes().getSessionId();

+0

好吧,這將保持他們登錄時不斷變化?如果他們在會議中打開兩個窗口,是否重要?有沒有辦法區分? –

+0

如果用戶在同一個會話(同一個瀏覽器)中打開兩個窗口,用戶登錄時也是如此。 –

4

我發現很容易在你的請求映射添加參數「HttpSession的會議」:

@GetMapping(value = "/hello") 
public String home(HttpSession session) { 
    String sessionId = session.getId(); 
    System.out.println("[session-id]: " + sessionId); 

    ... 

    return "anyPage"; 
} 
相關問題