我正在构建Web应用程序,我正在构建第一个用户注册和登录阶段。
我在考虑
class User
{
private userid;
private firstname
.........
//getters and setters
}
class UserService {
public boolean authenticate(username, password) {}
public addUser()
public saveuser()
public ConfirmEmail()
public resetPassword()
......
}
我的问题很少
答案 0 :(得分:5)
首先,我会考虑您是否可以使用其他身份验证系统,例如Google或Facebook,或Open ID(StackOverflow使用这些以及更多)。
其次,我会考虑使用像Spring Security这样的安全框架。
最后,如果您想要/需要从头开始自己动手,这里有一些指示
我假设您正在使用数据库。这是一个示例模式(MySQL)
CREATE TABLE users (
id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT
mail VARCHAR(255) NOT NULL,
name VARCHAR(255) NOT NULL,
enc_password VARCHARCHAR(64) NOT NULL,
salt CHAR(8) NOT NULL,
is_mail_authenticated TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
UNIQUE KEY (mail)
) ENGINE = InnoDB;
CREATE TABLE roles (
id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT
name VARCHAR(32) NOT NULL,
UNIQUE KEY (name)
) ENGINE = InnoDB;
CREATE TABLE users_roles (
user_id NTEGER UNSIGNED NOT NULL,
role_id NTEGER UNSIGNED NOT NULL,
FOREIGN KEY (user_id) REFERENCES users (id),
FOREIGN KEY (roel_id) REFERENCES roles (id),
) ENGINE = InnoDB;
这将是一个非常基本的用户模型。你需要一个生成盐的工具。我将使用Apache commons lang中的randomAlphanumeric。
您可能希望在登录失败次数过多后添加一些内容来锁定用户帐户。您可能希望跟踪他们登录的IP。这留给读者一个练习:)
我添加了is_mail_authenticated字段来跟踪用户是否已对其邮件进行身份验证。这通常是通过点击某人电子邮件中的链接来完成的。
答案 1 :(得分:0)
我认为,Spring提供了非常好的方法来创建具有角色分配的用户并强有力地验证用户,并且还维护安全性或应用程序。无需实现整个作为我们自己的应用程序,您可以使用spring security。 http://static.springsource.org/spring-security/site/start-here.html
您可以使用上述安全插件自行创建用户。