2013-02-24 82 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