2012-04-30 41 views
1

我對普通登錄表單使用spring security,在這裏用戶註冊,然後輸入用戶名和密碼登錄。我使用的登錄與Facebook和登錄谷歌選項,我能夠驗證用戶,並最終得到用戶的信息,如電子郵件,名字,姓氏等,登錄到任一FB /谷歌我使用FB /谷歌用戶電子郵件(唯一)作爲用戶名和系統生成的密碼作爲登錄憑證,以便這些值將自動輸入到彈出安全登錄表單中,然後如果我單擊提交按鈕,他/她將能夠登錄,然後將進行會話處理在我的網站上註冊的普通用戶的情況下,通過春季安全保護。如何使用JSP代碼自動提交Spring安全登錄表單?

由於上述所有步驟都是自動執行,除了最後一步,即提交表格 我想要使用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> 

回答

1

您的解決方案應該可行,但它缺少一件事。在嘗試提交它的JavaScript之前,您需要確保表單存在。在你的例子中,你正在表單上方做一個out.println。將它移到表單下面,JavaScript應該可以正常工作。

1

爲什麼它不工作的原因是因爲HTML表單有提交按鈕名稱爲「提交」,如果我們嘗試運行的JavaScript document.forms [「登錄」]提交()。它不會提交表單。如果表單提交按鈕名稱不是「提交」,那麼它將起作用。