2013-02-24 100 views
0

我是Java EE的新手,並不真正知道如何實現登錄系統。比方說,我有一個MySQL數據庫與表用戶,它有列的用戶名和密碼。我應該如何實現安全的登錄系統?安全我的意思是我發送密碼時的基本網絡安全性,如散列密碼和SSL連接。Java EE簡單登錄

我看看form based login但我能理解它是如何通過內置頁面j_security_check從數據庫中獲取數據的?我不需要以某種方式定義連接字符串,並且我在哪裏定義使用散列和SSL呢?

我使用的是tomcat v7.0。

+0

你如何保護你的網址?這個Q邀請了一個廣泛的討論主題 – user1428716 2013-02-24 19:58:48

+0

你是什麼意思的URL保護。 – Frozendragon 2013-02-24 20:04:43

回答

3

第一件事:不要在數據庫中存儲密碼。你可以存儲散列。

這裏有一個簡單的方法:

  1. 添加表格字段名和密碼。
  2. 創建一個作爲示例User調用的會話作用域託管bean。
  3. 在bean中創建屬性用戶名和密碼(不要忘記訪問器)。
  4. 使用您創建的屬性(作爲JSF#{userBean.username}中的示例)綁定窗體。
  5. 在名爲authorize的bean中創建一個方法。
  6. 使用表單上的提交按鈕綁定方法。
  7. 在授權方法中創建密碼哈希,並嘗試在表格中找到具有用戶名和密碼的用戶表中的一行。
  8. 成功時重定向到另一個頁面,空密碼字段,並使用用戶名字段識別誰登錄。

這是實現在Java EE授權我能想象的最簡單方法。

把一種形式像這樣的:

<h:form id="loginForm"> 
    <h:inputText maxlength="255" size="20" tabindex="10" value="#{userBean.login}" 
        styleClass="inputField" id="username"/> 
    <h:inputSecret maxlength="255" size="20" tabindex="20" 
        value="#{userBean.password}" styleClass="inputField" id="password"/> 
    <h:commandButton value="login" 
           action="#{userBean.validate}" id="submit"/> 
</h:form> 

和管理的豆:

@ManagedBean(name = "userBean") 
@SessionScoped 
public class UserBean { 
    private User user; 
    private String login; 
    private String password; 

    @PostConstruct 
    private void init() { 
     this.user = new User(); 
    } 

    public String validate() { 
     // Validate given login and password here 
     // When user seems to be valid assign it to this.user and return "/someFileForAuthorizedUsers.xhtml"; 
     this.login = null; 
     this.password = null; 

     return null; 
    } 
} 

不要忘了存取。 JSF需要它們。

+0

你能提供一些示例代碼嗎? – Frozendragon 2013-02-24 20:44:36