2013-10-31 27 views
0

嗨,大家好,我现在正在使用一种非常基本的方法将用户登录到应用程序中,并且使用带有用户用户名和密码的表单后面带有托管bean的表单,这是罚款跟2个用户的小型应用程序,但是我期待以增加这一点,并有一个注册页面等什么会是这样做有什么好的教程,我使用NetBeans和GlassFish提高登录页面安全性的方法

最好的方法,这是我的当前工作的登录设置

<h:form id="login-form"> 
     <h:outputText value="username:"/> 
     <h:inputText value="#{loginBean.username}" id="username"/> 
     <br/> 
     <h:outputText value="password:"/> 
     <h:inputSecret value="#{loginBean.password}" id="password"/> 
     <br/> 
     <h:commandButton id="button" value="Login" action="#{loginBean.doLogin}"/> 
     <br/> 
     <h:commandLink action="#{navigationBean.redirectToInfo}" value="Info page"/> 
     <br/> 
     <h:messages /> 
     <br/> 
    </h:form> 

和bean

*/ 
@ManagedBean 
@SessionScoped 
public class LoginBean implements Serializable { 

    private static final long serialVersionUID = 7765876811740798583L; 

    // Simple user database :) 
    private static final String[] users = {"test:test","kate:123456"}; 

    private String username; 
    private String password; 

    private boolean loggedIn; 

    @ManagedProperty(value="#{navigationBean}") 
    private NavigationBean navigationBean; 

    /** 
    * Login operation. 
    * @return 
    */ 
    public String doLogin() { 
     // Get every user from our sample database :) 
     for (String user: users) { 
      String dbUsername = user.split(":")[0]; 
      String dbPassword = user.split(":")[1]; 

      // Successful login 
      if (dbUsername.equals(username) && dbPassword.equals(password)) { 
       loggedIn = true; 
       return navigationBean.redirectToWelcome(); 
      } 
     } 

     // Set login ERROR 
     FacesMessage msg = new FacesMessage("Login error!", "ERROR MSG"); 
     msg.setSeverity(FacesMessage.SEVERITY_ERROR); 
     FacesContext.getCurrentInstance().addMessage(null, msg); 

     // To to login page 
     return navigationBean.toLogin(); 

    } 

    /** 
    * Logout operation. 
    * @return 
    */ 
    public String doLogout() { 
     // Set the paremeter indicating that user is logged in to false 
     loggedIn = false; 

     // Set logout message 
     FacesMessage msg = new FacesMessage("Logout success!", "INFO MSG"); 
     msg.setSeverity(FacesMessage.SEVERITY_INFO); 
     FacesContext.getCurrentInstance().addMessage(null, msg); 

     return navigationBean.toLogin(); 
    } 

    // ------------------------------ 
    // Getters & Setters 
+2

开始学习SQL数据库。 – BalusC

回答

1

“提高安全性”是一个相当广泛的问题。但你可以采取三个增量步骤是:

  1. 存储用户名/在某种类型的数据库密码(除非你心中有结垢严重,它真的没关系什么样)
  2. 别t存储密码,只存储密码散列(bcrypt,PBKDF2或其他一些加密哈希库,这使散列计算成本很高)
  3. 不要使用vanilla HTTP。如果您没有运输级别的安全性,您会发送明确的密码/令牌,其余都不重要。如果您对保护网络应用程序非常认真,请为整个网站使用HTTPS。