在web应用程序Java Spring MVC中编程用户注册
我正在构建web应用程序,其中我正在构建具有用户注册和登录的第一阶段 我在想在web应用程序Java Spring MVC中编程用户注册,java,authentication,spring-mvc,Java,Authentication,Spring Mvc,我正在构建web应用程序,其中我正在构建具有用户注册和登录的第一阶段 我在想 class User { private userid; private firstname ......... //getters and setters } class UserService { public boolean authenticate(username, password) {} public addUser() public save
class User
{
private userid;
private firstname
.........
//getters and setters
}
class UserService {
public boolean authenticate(username, password) {}
public addUser()
public saveuser()
public ConfirmEmail()
public resetPassword()
......
}
我有几个问题
首先,我想看看你是否可以使用另一种身份验证系统,如谷歌或Facebook,或开放ID(StackOverflow使用这些和更多) 其次,我会考虑使用一个安全框架,比如 最后,如果你想/需要自己从头开始做这件事,这里有一些建议
- 始终使用单向散列机制(例如SHA)存储密码
- 在对密码进行哈希运算时使用-每个密码应该有一个随机的salt值(请参阅以了解其长度)
- 您还可以有一个不存储在密码旁边的恒定应用程序范围的salt值
- 赋予用户角色。这将解决前端/后端用户的问题
我添加了is_mail_authenticated字段来跟踪用户是否对其邮件进行了身份验证。这通常是通过单击电子邮件中的链接来实现的。首先,我要看看您是否可以使用其他身份验证系统,如Google或Facebook,或Open ID(StackOverflow使用这些和更多) 其次,我会考虑使用一个安全框架,比如 最后,如果你想/需要自己从头开始做这件事,这里有一些建议
- 始终使用单向散列机制(例如SHA)存储密码
- 在对密码进行哈希运算时使用-每个密码应该有一个随机的salt值(请参阅以了解其长度)
- 您还可以有一个不存储在密码旁边的恒定应用程序范围的salt值
- 赋予用户角色。这将解决前端/后端用户的问题
我添加了is_mail_authenticated字段来跟踪用户是否对其邮件进行了身份验证。这通常是通过单击电子邮件中的链接来实现的。我认为,Spring为创建具有角色分配的用户、有力地验证用户以及维护应用程序的安全性提供了非常好的方法。不需要将整个应用程序实现为我们自己的应用程序,您可以使用spring security。
您可以自己创建用户,也可以使用上述安全插件进行身份验证。我认为,Spring提供了非常好的方法来创建具有角色分配的用户,并对用户进行强有力的身份验证,同时还可以维护应用程序的安全性。不需要将整个应用程序实现为我们自己的应用程序,您可以使用spring security。
您也可以自己创建用户,使用上述安全插件进行身份验证。请不要推荐acegi。它只是SpringSecurity2.0.x的一个旧的和不推荐的版本。Spring Security的当前版本是3.0.x感谢您的建议,我已经更改了答案并删除了acegi安全性。请不要推荐acegi。它只是SpringSecurity2.0.x的一个旧的和不推荐的版本。Spring Security的当前版本是3.0.x感谢您的建议,我已经更改了答案并删除了acegi安全性。
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;