Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何以编程方式登录j_security_check_Java_Jsp_Single Sign On_J Security Check - Fatal编程技术网

Java 如何以编程方式登录j_security_check

Java 如何以编程方式登录j_security_check,java,jsp,single-sign-on,j-security-check,Java,Jsp,Single Sign On,J Security Check,我有一个JSP web应用程序,它使用j\u security\u check。如果我知道用户ID和密码,是否可以通过JSP页面以编程方式将特定用户登录到j_security\u check?我试图通过这种方式将变量作为URL参数传递 response.sendRedirect(www.mydomain.com/j_security_check?j_username=someUserName&j_password=somePassword ) …但它不起作用。有什么办法吗 编辑: 这是

我有一个JSP web应用程序,它使用
j\u security\u check
。如果我知道用户ID和密码,是否可以通过JSP页面以编程方式将特定用户登录到
j_security\u check
?我试图通过这种方式将变量作为URL参数传递

response.sendRedirect(www.mydomain.com/j_security_check?j_username=someUserName&j_password=somePassword )
…但它不起作用。有什么办法吗

编辑: 这是我的登录页面,目前运行良好。出于安全考虑,我删减了一些代码

    <form name="signon" method="post" action="/j_security_check">
      <table width="100%" cellpadding="4" cellspacing="0">

        <tr>
          <td valign="top" colspan="4">
            <h2><%= UI.tr(null, "login_details") %>
            </h2>
          </td>
        </tr>

        <tr>
          <td valign="top" width="150px">
            <%= UI.tr(null, "login_id") %>
          </td>
          <td valign="top" width="150px">
            <%= UI.tr(null, "login_pass") %>
          </td>
          <td valign="top" width="150px">
            <%= UI.tr(null, "login_token_or_captcha") %>
          </td>
          <td width="100%">&nbsp;</td>
        </tr>


        <tr>

          <%
            if (logins == null) {
          %>
          <td>
            <input type="hidden" name="j_uri" value="/index.jsp">
            <input type="text" id="username" name="j_username" size="16" style="width: 150px;" autocomplete="off" <%= username == null ? "" : "disabled value='" + username + "'" %> onblur="return checkCaptcha();">
          </td>
          <%
          } else {
          %>
          <td>
            <select name="j_username" style="width: 150px;">
              <%
                for (Login login : logins) {
              %>
              <option><%= login.getUsername() %>
              </option>
              <%
                }
              %>
            </select>
          </td>
          <%
            }
          %>
          <td><input type="password" name="j_password" size="16" style="width: 150px;">                </td>
          <td><input type="text" id="mypw" name="mypw" size="16" autocomplete="off" style="width: 150px;"></td>
          <td><input class="submit" type="submit" name="submit" value="<%= UI.tr(null, "login_submit") %>"></td>
        </tr>




<tr>
  <td valign="top" colspan="4">
    <%-- <%
    if("registry.nic.hn".equals(request.getServerName())) {
    %>
    <!-- GARTH - put whatever you want here for .HN -->
    &nbsp;
    <% } else { %> --%>
        <h2><%= UI.tr(null, "login_news") %>
        </h2>
        <div><%= HTMLFormat.addBreaks(SiteConf.getSiteConf().getNews()) %>
        </div>
    <%-- <% } %>     --%>
  </td>
</tr>


您可以让用户在jsp页面和servlet上输入用户名和密码,或者使用facelets页面和bean登录用户

以下代码在JSP文件中适用于我:

String url = "j_security_check?j_username=" + username + "&j_password=" + password;
String redirectUrl = response.encodeRedirectURL(url);
response.sendRedirect(redirectUrl);

您声明要以编程方式登录。如果这是你的目标,我会避免使用j_security_检查。j_security_check与基于表单的身份验证一起使用(请查看有关保护Web应用程序的Oracle资源-表单身份验证的内容大约涵盖了一半:)


我建议您查看该资源并深入研究一些备选方案,但另一种方法是使用Java身份验证和授权服务(JAAS)API(这里有一个教程链接:)JAAS和回调处理程序是编程寻址身份验证(和授权)的非抽象方式。许多健壮的框架都基于此JAVA API,因此如果您仍在努力解决此问题,可能值得一看。

在我看来,使用
j_security\u check
url登录时,添加
username
password
似乎是一个很大的安全隐患

相反,您可以执行以下步骤:

  • 创建一个单独的JSP,其中包含一个表单
  • 此表单在
    j_security\u check
    url上发布,并带有用户名和密码
  • 您可以动态地包含此JSP
  • 这个JSP可以有onload(JS)函数,它可以发布这个表单

这样就安全了。

您好。首先感谢您的回答。我不希望用户输入密码或用户名。我只想通过预定义的用户以编程方式登录j_security_check。这在JSP页面上是可能的吗?JSP页面应仅用于捕获用户的登录信息,并且该信息应发送到一个servlet,该servlet使用request.login(用户名、密码)方法处理用户的登录。如何发送登录信息?在jsp页面中,我看不到request.login方法?它对我不起作用。有关于j_安全检查的配置吗?您使用什么框架进行身份验证?Tomcat表单身份验证?如何以常规方式进行身份验证?没有程序认证?你能检查我的登录页面吗?你还需要咨询创建认证框架的人2条评论:1)登录表单使用方法“post”。上面的JSP代码使用方法“get”。如果框架不支持它-它将无法工作(Tomcat表单身份验证支持它)2)是登录表单中的附加输入参数:“mypw”。期望值是多少?也许你也应该通过考试?String url=“j_security_check?j_username=“+username+”&j_password=“+password”&mypw=“+mypw_值