有没有办法从自定义 Java servlet 中的 JSESSIONID 中提取 Maximo 用户名?
Is there a way to extract Maximo username from JSESSIONID inside of a custom Java servlet?
我正在 Maximo 中创建自定义 Java servlet。我想借助 Maximo 的身份验证,作为其中的一部分,我需要某种方法从 HttpServletRequest
对象检索用户信息(用户名、显示名称等)。我可以从请求 cookie 访问 JSESSIONID
(据我所知,这是 Maximo/WebSphere 跟踪您的用户会话的方式),但我无法找到一种方法来使用它检索 UserInfo
对象。
我已经搜索了 Java 文档,试图找出一些问题,但没有成功。现在似乎 Java Maximo 中的定制非常少见,因此没有多少资源可以解决这个问题。
你试过了吗psdi.webclient.system.session.WebClientSessionManager.getWebClientSessionManager(javax.servlet.http.HttpSession session).getWebClientSession(javax.servlet.http.HttpServletRequest request)
?
在 Javadocs 中进行了一番挖掘后,我明白了这一点。原来我可以将 MXSession 从请求会话对象中拉出来,如下所示:
Enumeration e = req.getSession().getAttributeNames();
String username = null;
while (e.hasMoreElements()) {
String attrName = (String) e.nextElement();
if (attrName.equals("MXSession")) {
MXSession session = (MXSession) req
.getSession()
.getAttribute("MXSession");
UserInfo user = session.getUserInfo();
if (user != null) {
username = user.getUserName().toLowerCase();
}
}
Preacher 的示例也有效,但前提是存在活动的 WebclientSession
,并且对于我的特定用例,我希望它在只有 OslcSession
的情况下也有效t 总是有关联的 WebclientSession
。此解决方案适用于任何一种情况,因为 MXSession
始终可用。
我正在 Maximo 中创建自定义 Java servlet。我想借助 Maximo 的身份验证,作为其中的一部分,我需要某种方法从 HttpServletRequest
对象检索用户信息(用户名、显示名称等)。我可以从请求 cookie 访问 JSESSIONID
(据我所知,这是 Maximo/WebSphere 跟踪您的用户会话的方式),但我无法找到一种方法来使用它检索 UserInfo
对象。
我已经搜索了 Java 文档,试图找出一些问题,但没有成功。现在似乎 Java Maximo 中的定制非常少见,因此没有多少资源可以解决这个问题。
你试过了吗psdi.webclient.system.session.WebClientSessionManager.getWebClientSessionManager(javax.servlet.http.HttpSession session).getWebClientSession(javax.servlet.http.HttpServletRequest request)
?
在 Javadocs 中进行了一番挖掘后,我明白了这一点。原来我可以将 MXSession 从请求会话对象中拉出来,如下所示:
Enumeration e = req.getSession().getAttributeNames();
String username = null;
while (e.hasMoreElements()) {
String attrName = (String) e.nextElement();
if (attrName.equals("MXSession")) {
MXSession session = (MXSession) req
.getSession()
.getAttribute("MXSession");
UserInfo user = session.getUserInfo();
if (user != null) {
username = user.getUserName().toLowerCase();
}
}
Preacher 的示例也有效,但前提是存在活动的 WebclientSession
,并且对于我的特定用例,我希望它在只有 OslcSession
的情况下也有效t 总是有关联的 WebclientSession
。此解决方案适用于任何一种情况,因为 MXSession
始终可用。