java - JAAS tomcat 登录模块传递 ip 地址的可能方法

标签 java javascript tomcat jsf jaas

我一直在寻找一种方法,将客户端 ip 以及用户 ID 和密码从 JAAS 登录页面传递到我的 Web 代码中的 JAAS 登录模块实现。 JAAS 只允许将用户标识和密码传递给登录模块。我的想法是有一个 java 脚本代码将 ip 地址附加到用户 id,然后调用表单提交。我只是没有正确的 java 脚本代码来执行此操作。你能帮忙吗?

该网页有两个输入字段,j_userid 和 j_password,JAAS 代码知道要查看它们。那么在表单提交之前,我可以使用什么 javaScript 代码将 ip 地址添加到 j_userid 字段。我在考虑“ip-address#userid”,然后在我的登录模块中我会从 userid 中取出 ip 地址。

最佳答案

我创建了这两个 javaScript 函数。

function addIpSubmit() 
{                 
    var theForm = document.getElementById("login_form");
    var userName = theForm.username.value;
    userName = theForm.clientip.value + "#" + userName;
    theForm.j_username.value = userName;
    if( validate_required( theForm.username, "User ID is required" ) )
    {
        if(  validate_required( theForm.j_password, "Password is required" ) )
        {
            theForm.submit();
        }
    }
}  

function validate_required( field, alerttxt )
{
    with (field)
    {
        if (value==null||value=="")
        {
            alert(alerttxt);
            return false;
        }
        else
        {
            return true;
        }
    }
}

addIpSubmit 从登录按钮调用。你可以看到我有一个将 ip 地址放入隐藏字段的 bean。 j_username JAAS 字段也是隐藏的,由 addIpSubmit() 函数填充。

<input id="clientip" type="hidden" name="clientip" value="#{loginMBean.ip}"/>
<input id="j_username" type="hidden" name="j_username" />
<input type="button" name="OtherLogin" value="Login" onclick="addIpSubmit()" />

它将 ip 修改为用户名并调用 JAAS 提交函数。然后在登录模块中获取 IP 地址和用户名。

String userid = username;

if( username.contains( "#" ) )
{
    ip = username.split( "#" )[0];
    userid = username.split( "#" )[1];
}

请记住,FacesContext.getCurrentInstance().getExternalContext().getRemoteUser() 现在包含 ip#userid。

关于java - JAAS tomcat 登录模块传递 ip 地址的可能方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1200091/

相关文章:

javascript - 使用图像代替 Canvas

java - 在 URL 中包含变量,返回错误页面

tomcat - Spring 安全上下文路径解析器

java - 调整对话框大小时如何调整对话框内子项的大小

java - Maven 站点插件 : Define url in parent without adding subdirectories

javascript - 在 ngRoute 示例中工作的多个 Controller

spring - Grails,将文件上传大小限制为几兆字节

apache - Apache Tomcat 是建立在 Apache Web Server 平台上的吗?

java - 如何根据实数的小数部分递增计数器

java - 传递小数时收到 "Not a valid char constructor input"错误