我試圖通過實現SessionAware
接口(我實現了setSession
方法)來訪問攔截器內的會話對象,但是我無法通過這種方式獲取會話對象。Struts 2 Session in interceptor
然後我試着ActionContext.getContext().getSession()
,我能夠獲得會話,但我不知道,但它只是第一次在每個瀏覽器中爲每個用戶空出&然後當另一個動作調用。
我認爲會議有問題。爲什麼第一次只給我一個空的會話?它是否在第一次給空會話之後才設置一些東西?
如果是這種情況,那麼每個人都會在他們的第一個請求&上顯示爲guest,然後在第二個請求&上顯示用戶名。
還是我以錯誤的方式獲取會話?
我看到代碼在攔截器中獲取會話,但這對我無效,因爲它無法找到常數HTTP_REQUEST
。
final ActionContext context = invocation.getInvocationContext();
HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST);
HttpSession session = request.getSession(true);
Object user = session.getAttribute(Constants.USER_HANDLE);
有沒有解決任何問題的建議?
我忘了提及的東西 - 我的網站是一個安全的網站(https),所以如果用戶沒有登錄,他不會讓他進入網站&,如果他登錄,至少他的用戶名應該是在會議中。它不是嗎?
您需要提供有關何時將用戶名放入會話的更多詳細信息。如何處理登錄名? –
kerberos用戶名被servlet-config攔截器放置在會話中。但是它只把它放在第二個請求上,這導致我有問題...... –
'ServletConfigInterceptor'設置操作的值,但不會在會話中放置任何東西。就目前而言,你的問題並沒有提供足夠的信息來幫助你。 HttpServletRequest.getUserPrincipal()是否包含您需要的用戶信息? –