2015-06-12 57 views
1

我使用登錄應用程序,它是驗證形式如果用戶名和密碼爲空。 現在我發送的用戶名和密碼像這樣 http://localhost:8080/LoginApp/loginAction.action?userName=jagannath&password=123然後也登錄成功,而不是填寫login.jsp表單頁面。在這種情況下,用戶不應該登錄。如何避免使用Struts2。用戶不應該使用查詢字符串登錄

+0

顯示你的行動和ActionForm代碼。 ?您應該使用actionForm而不是查詢字符串。請點擊此處http://stackoverflow.com/que stions/18269343/struts-1-login-application-example-error –

+1

我正在使用struts2 – jagannath

+1

您需要編寫自定義攔截器並將其添加到自定義攔截器堆棧中。在攔截器中,只允許POST請求通過,並以更喜歡的方式拒絕GET請求。 –

回答

0

有兩種類型的驗證客戶端(Html/javascript_和服務器端(Java代碼)。 截至目前您只做客戶端驗證。您需要服務器端驗證與url param javascript驗證不是所謂的 - 即你輸入做驗證當PARAM傳遞,你需要在Java代碼中,以檢查它們是否有效或無效的示例代碼下面

public class LoginAction extends ActionSupport { 

    private String userName; 
    private String password; 

    public String execute() { 
     return SUCCESS; 
    } 


    public String getUserName() { 
     return userName; 
    } 

    public void setUserName(String userName) { 
     this.userName = userName; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 

    public void validate() { 
     if (getUserName().length() == 0) { 
      addFieldError("userName", "UserName.required"); 
     } else if (!getUserName().equals("Arpit")) { 
      addFieldError("userName", "Invalid User"); 
     } 
     if (getPassword().length() == 0) { 
      addFieldError("password", getText("password.required")); 
     } 
    } 
} 

更多細節here

+1

對不起,但我猜這不是什麼OP是問。他從未說過或暗示他正在使用任何客戶端驗證。他詢問如何阻止來自用戶身份驗證的GET請求,並且只讓POST請求通過。 –