當我嘗試訪問 Liferay Portal 會話數(shù)據(jù)時,它似乎不包含由內(nèi)部 Liferay Portal 進程存儲的數(shù)據(jù)。是否可以訪問登錄過程中存儲的令牌OpenId-Connect?基本上,我的任務(wù)是尋找軟件,它可以使實現(xiàn)門戶更容易,該門戶顯示多個不同內(nèi)部平臺的 API 端點提供的功能。目前,我正在查看 Liferay Portal 7.2。對于登錄,我使用了 Liferay Portal 的 OpenId-Connect 實現(xiàn),因為身份驗證由內(nèi)部登錄服務(wù)器處理。在 OpenID 連接登錄過程結(jié)束時返回的訪問令牌是一個 API 令牌,然后我想用它來訪問各種 API 端點。目前我得到這樣的會話HttpSession httpSession = PortalUtil.getHttpServletRequest(actionRequest).getSession();在查看了 OpenId-Connect 實現(xiàn)之后com.liferay.portal.security.sso.openid.connect.internal.OpenIdConnectServiceHandlerImpl然后我嘗試像這樣獲取會話對象。Object openIdConnectSessionObject = httpSession.getAttribute("OPEN_ID_CONNECT_SESSION");但在這一點上,openIdConnectSessionObject總是null。我讀過不同的范圍有不同的會話,但是有沒有辦法訪問這些數(shù)據(jù),或者 Liferay Portal 是否真的不適合我正在嘗試做的事情。
1 回答

慕妹3242003
TA貢獻1824條經(jīng)驗 獲得超6個贊
有一個細節(jié)值得注意:
PortalUtil.getHttpServletRequest(actionRequest)
將使您能夠訪問一個PortletRequest
依附于HttpServletRequest
接口的人工對象,以防某些 API 需要來自 servlet 而不是門戶世界的請求。
PortletRequest 僅包含指向特定 portlet 的參數(shù)(和會話信息),不包含任何其他內(nèi)容。
如果您對實際的底層 HttpServletRequest 感興趣,您將需要PortalUtil.getOriginalServletRequest
,它將 HttpServletRequest 作為輸入。你會以你已經(jīng)探索過的方式得到它。最后,你將擁有
session = PortalUtil.getOriginalServletRequest( PortalUtil.getHttpServletRequest(actionRequest)).getSession();
獲取實際服務(wù)器的會話。
我沒有檢查這是否有用,甚至沒有檢查您提出的問題的可取解決方案,但它可能會讓您進一步解決問題。
添加回答
舉報
0/150
提交
取消