4

を使用する JSP Web アプリケーションがありますj_security_checkj_security_checkユーザーID とパスワードがわかっている場合、JSP ページを介してプログラムで特定のユーザーにログインすることはできますか? このように変数を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>

4

4 に答える 4

3

次のコードは、JSP ファイルで機能します。

String url = "j_security_check?j_username=" + username + "&j_password=" + password;
String redirectUrl = response.encodeRedirectURL(url);
response.sendRedirect(redirectUrl);
于 2013-04-01T13:18:02.790 に答える
2

私の見解では、j_security_checkURL を追加usernameしてログインpasswordすることは、セキュリティ上の重要な要素のようです。

代わりに、次の手順を実行できます。

  • フォームを持つ別の JSP を作成する
  • このフォームj_security_checkは、ユーザー名とパスワードを使用して URL に投稿します
  • このJSPを動的に含めることができます
  • この JSP には、このフォームを POST できるオンロード (JS) 関数を含めることができます。

このようにして、安全になります。

于 2016-07-18T07:24:10.923 に答える
0

ここで説明するように、jsp ページとサーブレットでユーザー名とパスワードを入力するか、Facelets ページと Bean を使用してユーザーをログインさせることができます。

于 2013-04-01T12:07:44.637 に答える