1

我在普通登录表单中使用spring security,用户在其中注册,然后输入他们的用户名和密码进行登录。我使用 facebook 登录并使用 google 选项登录,我能够验证用户并最终获取用户的信息,如电子邮件、名字、姓氏等,登录到 fb/google 后,我正在使用 fb/google 用户电子邮件(唯一)作为用户名和系统生成的密码作为登录凭据,以便这些值将自动输入到 Spring Security 登录表单,然后如果我单击提交按钮,他/她将能够登录,然后将进行会话处理像在我的网站上注册的普通用户一样,由 spring security 照顾。

因为,上述所有步骤都是自动化的,除了最后一步,即提交表单我想自动化最后一步也使用 javascript 或 JSP。我尝试在 JSP 中使用 javascript 提交表单,但无法提交

    <%
    if(Success_login_with_facebook/Success_login_with_google)
    {
    email = fb_email/google_email;
    Sql query to get username and password from db using email;//unique row will be returned

    uname_db = username;
    uname_pass = password;


    out.println("<script>document.forms('login').submit();</script>");
    }

    %>

<div id="autologin" style="display:none">
    <form name="f" id='login' action="<c:url value='j_spring_security_check'/>" method="POST" >

        User ID  <input size=35 type='text' id="first" name='j_username' value='<%=uname_db %>'/>
        Password<input size=35 type='password' name='j_password' value='<%=pass_db %>'>

        <input type="hidden" name="_spring_security_remember_me" value=true>

        <input style="height:30px"  name="submit" type="submit" value="Sign In">

        </form>
</div>
4

2 回答 2

1

您的解决方案应该有效,但它缺少一件事。在尝试使用 JavaScript 提交表单之前,您需要确保表单存在。在您的示例中,您正在表单上方执行 out.println 。将它移到表单下方,JavaScript 应该可以正常工作。

于 2012-04-30T10:48:23.110 回答
1

它不起作用的原因是因为html表单的提交按钮名称为“提交”,如果我们尝试运行javascript document.forms['login'].submit(); 它不会提交表单。如果表单提交按钮名称不是“提交”,那么它将起作用。

于 2012-05-04T04:30:17.390 回答