首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从java桌面应用程序持久化fos_user数据

如何从java桌面应用程序持久化fos_user数据
EN

Stack Overflow用户
提问于 2018-03-22 05:38:18
回答 1查看 79关注 0票数 0

我们是一个团队中的五名学生,他们正在使用SCRUM进行一个项目。我们的第一次冲刺是网络应用..。现在,我们正在使用第二个sprint,它是带有JAVA的桌面应用程序。在第一个sprint(Sprint )中,我们使用FOS_USER包创建了我们的数据库,这个数据库包含'User‘表,他的script是(一些列):

代码语言:javascript
运行
复制
DROP TABLE IF EXISTS `User`;
CREATE TABLE IF NOT EXISTS `User` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(180) COLLATE utf8_unicode_ci NOT NULL,
  `username_canonical` varchar(180) COLLATE utf8_unicode_ci NOT NULL,
  `email` varchar(180) COLLATE utf8_unicode_ci NOT NULL,
  `email_canonical` varchar(180) COLLATE utf8_unicode_ci NOT NULL,
  `enabled` tinyint(1) NOT NULL,
  `salt` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `password` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `last_login` datetime DEFAULT NULL,
  `confirmation_token` varchar(180) COLLATE utf8_unicode_ci DEFAULT NULL,
  `password_requested_at` datetime DEFAULT NULL,
  `roles` longtext COLLATE utf8_unicode_ci NOT NULL COMMENT '(DC2Type:array)',
  PRIMARY KEY (`id`),
  UNIQUE KEY `UNIQ_1D1C63B392FC23A8` (`username_canonical`),
  UNIQUE KEY `UNIQ_1D1C63B3A0D96FBF` (`email_canonical`),
  UNIQUE KEY `UNIQ_1D1C63B3FF631228` (`etablissement_id`),
  UNIQUE KEY `UNIQ_1D1C63B3C05FB297` (`confirmation_token`)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

现在,在sprint java中,我们已经使用Netbeans工具从数据库中生成了实体,我们得到了这个类(一些属性):

代码语言:javascript
运行
复制
public class User{
private Integer id;
private String username;
private String usernameCanonical;
private String email;
private String emailCanonical;
private short enabled;
private String salt;
private String password;
private Date lastLogin;
private String confirmationToken;
private Date passwordRequestedAt;
private String roles;
}

现在,我们需要将一个用户对象持久化(/get来验证)到(/from)这个数据库中,但是问题是,密码是用FOS_USER Bundle.So加密的,这是如何减少/加密这个密码的。我们的DAOUser是这样的!?

代码语言:javascript
运行
复制
public void ajouter(User user) {
    String req = "INSERT INTO User (nom,username,email,enabled,salt,password,roles) VALUES (?,?,?,?,?,?)" ;
    PreparedStatement pre;
    try {
        pre = connection.prepareStatement(req);
        pre.setString(1, user.getUsername());
        pre.setString(2, user.getEmail());
        pre.setShort(3, user.getEnabled());
        //Some thing wrong : exp in database {username:Zain,salt:'0Yi3LZANkpfMsnhbn2XHA00cASLCGVfWc7TJWNOjXsk')
        pre.setString(4, user.getSalt());
        //Some thing wrong : exp in database {username:Zain,passowrd:'qXSSYBDXWQA/ZcbPVOoBKzd5oshTkQP0Q3AeEilnh47Mcrc9uUZYDYwmRJiMKc7nRPvRx6k0eEJrc6HrrDvZtQ==')
        pre.setString(5, user.getPassword());
        //This Role must be unserialised(the equivalent unserialize method in php)
        pre.setString(6,user.getRoles());

        pre.executeUpdate();
    } catch (SQLException ex) {
        Logger.getLogger(EtablissementService.class.getName()).log(Level.SEVERE, null, ex);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-22 05:51:06

你不想解密密码。应该是单向散列。若要检查密码的有效性,请以相同的方式加密用户输入,并检查计算出来的散列以匹配数据库中的散列。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49421289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档