我正在开发为 jboss 实现了自定义登录模块的企业应用程序。它具有基于表单的安全登录,用户提供用户名和密码。在登录模块中,根据数据库检查凭据并完成一些附加检查。现在我想让用户通过一次性令牌(例如一些哈希字符串:EF223222131)登录,我想通过电子邮件将其作为 URL: 发送给他applicationServer:8080/myApplication/login2.jsp?hash=EF223222131
。在页面上,login2.jsp
我有基于表单的身份验证的相同表单,我将用户名和密码留空,并添加字段哈希。所有字段都是隐藏的,并且 javascript 在页面加载时触发表单提交。在登录模块中,我设法获得了哈希:
HttpServletRequest httpRequest =
(HttpServletRequest)PolicyContext.getContext("javax.servlet.http.HttpServletRequest");
String hashV = httpRequest.getParameter("hashValue");
然后我从数据库集的身份和角色以及相应的方法中获取loginOk = true;
用户commitOk = true;
。但是在我的网络应用程序中,用户名保持为空。
httpRequest.getUserPrincipal().getName()
返回空字符串。此外,如果我调用 EJB,我会从 sessionContext.getCallerPrincipal().getName()
.
有没有办法从登录模块设置这些值?还是有另一种通过 URL 中的令牌登录的方法?
我正在使用 jboss 4.0.3SP1 和 java 1.4.2,但我认为它应该与较新的配置相同。